javascript - Chrome WebSocket 连接立即关闭

标签 javascript node.js apache google-chrome websocket

我一直在尝试使用nodejs设置wss服务器,并且在尝试使用chrome连接到它时遇到了问题。在禁用所有扩展程序且处于隐身窗口中时,问题仍然存在,因此我已排除该问题。

尝试使用 Chrome 进行连接时,出现错误:

WebSocket connection to 'wss://www.domain-name.com/' failed:

没有给出任何理由。在服务器上,立即调用 socket.on('close') 并描述“远程对等点断开连接” close 事件的 wasClean = false。从 safari 和 Firefox 连接时不会发生此错误,因此我不确定在哪里查看导致该错误的原因。它在 AWS Lightsail 上运行,并通过 Apache 代理服务器运行。

客户端代码:

var socket = new WebSocket("wss://www.domain-name.com", 'JSON')
socket.onopen = function (event) {
    console.log('open');
    socket.send('socket opened')};

socket.onclose = function (event) {
    console.log(event)};

socket.onmessage = function(message) {
    console.log('receiving message from server...')};

服务器代码:

const WebSocketServer = require('websocket').server;
app = express()
var server = app.listen(3000, () => {
    console.log('Server started');
});

app.use(express.static('public'));

var wsServer = new WebSocketServer({
    httpServer: server
});

wsServer.on('request', function(request){
    console.log('New connection');
    var connection = request.accept(null, request.origin);

    connection.send('welcome from server...');

    connection.on('message', function(message){
        console.log(message)};

    connection.on('close', function(reasonCode, description) {
        console.log('disconnecting', reasonCode, description);
        });
});

在切换到安全的 WebSocket 服务器之前我也遇到了同样的错误。任何帮助将不胜感激,我已经没有地方可以查找,也没有办法尝试获取更多信息来帮助解决问题。

编辑:它似乎可以在我手机上的 chrome 上运行,但不能在我 friend 手机上的 chrome 上运行?

最佳答案

问题在于接受连接时未指定协议(protocol)。经过大约 20 小时处理同一错误并实现 SSL 证书以使其正常工作后,我进行了更改:

request.accept(null, request.origin);

至:

request.accept('json', request.origin);

由于某种原因,chrome 给出了一条非常无用的错误消息。 Microsoft Edge 也会出现同样的错误,但提供了更有用的错误消息,以便我可以弄清楚发生了什么。

关于javascript - Chrome WebSocket 连接立即关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71342595/

相关文章:

php - PHP 中的 HTTP_HOST 和 SERVER_NAME 有什么区别?

JavaScript 对象 - 在不使用 eval 的情况下添加属性?

javascript - 在 Bluebird 中返回被拒绝的 promise 和 onPossiblyUnhandledRejection 处理程序

node.js - 如何通过 IRC 适配器使用 Hubot 和 node-cron

node.js - HEROKU 无法读取 null 的属性查询

Apache 和 IIS 共享相同的 SSL 证书

javascript - JQuery getJSON 在 IE 中不起作用

javascript - Youtube iframe javascript,跟踪观看视频的百分比?

c# - 如何使用javascript刷新父页面并关闭子窗口

linux - 在 Amazon AWS 中部署 WAR 文件 - Tomcat 和 Apache HTTP Server 冲突