繁体   English   中英

Chrome WebSocket 连接立即关闭

[英]Chrome WebSocket connection closes immediately

我一直在尝试使用 nodejs 设置 wss 服务器,并且在尝试使用 chrome 连接到它时遇到了问题。 禁用所有扩展并在隐身 window 中仍然会出现此问题,因此我已将其排除为问题。

尝试使用 chrome 连接时,出现错误:

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

没有给出任何理由。 在服务器上,socket.on('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,但不适用于我朋友手机上的 chrome?

问题在于接受连接时未指定协议。 在处理相同的错误并实施 SSL 证书以使其工作大约 20 小时后,我更改了:

request.accept(null, request.origin);

至:

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

出于某种原因,chrome 给出了一个非常无用的错误消息。 Microsoft edge 发生了相同的错误,但提供了更有用的错误消息,因此我可以弄清楚发生了什么。

在我的情况下,这是由于将未使用的options值作为第三个参数传递给 WebSocket 构造函数引起的。 options 参数由 Node.js 的 ws 模块支持,但浏览器不支持; 但是,Chrome 并没有显示干净的错误消息,而是在没有很好描述的情况下关闭了连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM