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 服务器之前,我也遇到了同样的错误。如有任何帮助,我将不胜感激,我 运行 没有地方可以查看,也没有办法尝试获取更多信息来帮助解决问题。
编辑:它似乎对我的 phone 的 chrome 有效,但对我的朋友 phone 的 chrome 无效?
问题是在接受连接时没有指定协议。在处理同一个错误并实施 SSL 证书使其正常工作大约 20 小时后,我更改了:
request.accept(null, request.origin);
至:
request.accept('json', request.origin);
出于某种原因,chrome 给出了一个非常无用的错误消息。 Microsoft edge 发生了同样的错误,但提供了更有用的错误消息,因此我可以弄清楚发生了什么。
我一直在尝试使用 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 服务器之前,我也遇到了同样的错误。如有任何帮助,我将不胜感激,我 运行 没有地方可以查看,也没有办法尝试获取更多信息来帮助解决问题。
编辑:它似乎对我的 phone 的 chrome 有效,但对我的朋友 phone 的 chrome 无效?
问题是在接受连接时没有指定协议。在处理同一个错误并实施 SSL 证书使其正常工作大约 20 小时后,我更改了:
request.accept(null, request.origin);
至:
request.accept('json', request.origin);
出于某种原因,chrome 给出了一个非常无用的错误消息。 Microsoft edge 发生了同样的错误,但提供了更有用的错误消息,因此我可以弄清楚发生了什么。