[英]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.