上周二我尝试在 wss:// 中启动服务器,但它没有用。今天我决定查看WebSocket代码,我发现为什么我的WebSocket直接关闭了。这是我发现的错误代码:
1002 Unsupported usage of rsv bits without negotiated extension.
VALUE OF RSV1:Opcode: 7, fin: false, length: 69, hasPayload: true, masked: false
我的程序适用于 ws:// 但不适用于 wss:// 。我无法理解为什么TLS会被阻止。
我已经停止了精确的IPtables,证书也没问题。
你有什么想法吗?
如果你想查看下面是我的代码:
var fs = require('fs');
var https = require('https');
var WebSocketServer = require('websocket').server;
var express = require('express');
var serverTLS = express.createServer({
key: fs.readFileSync(__dirname + '/notification_mail/notification.mail.com.key'),
cert: fs.readFileSync(__dirname + '/notification_mail/notification.mail.com.crt')
});
serverTLS.configure(function(){
serverTLS.set('views',__dirname);
serverTLS.set('view engine','ejs');
});
serverTLS.get('/',function(req,res){
res.render('index',{layout: false });
});
serverTLS.listen("443");
var wss = new WebSocketServer({ httpServer: serverTLS, autoAcceptConnections: true });
wss.on('connect', function(connection) {
console.log((new Date()) + " Connection accepted.");
connection.on('close', function(connection) {
console.log((new Date()) + " Disconnected");
});
});
console.log("Server launch");
我的HTML文件
<html>
<head>
<meta charset="utf-8">
<title>Example</title>
</head>
<body>
<h1>Serveur 2</h1>
<div id="tchat"></div>
<script>
var url = "wss://notification.mail.com";
var wsCtor = window['MozWebSocket'] ? MozWebSocket : WebSocket;
this.socket = new wsCtor(url, 'connect');
this.socket.onclose = function(){
alert ("Connection lost");
}
</script>
</body>
</html>
答案 0 :(得分:0)
错误消息令人困惑,因为
您尝试使用Chrome或IE10吗?
您还可以尝试针对您的节点服务器运行AutobahnTestsuite。
testsuite具有支持WSS的模糊化客户端模式。测试套件包括广泛的线路日志报告,可能有助于找出发生的情况。
披露:我是Autobahn的原作者,并为Tavendo工作。
答案 1 :(得分:-1)
我启动了wss://(但在.NET上),我也得到了7个操作码。我每5秒使用ReadTimeout
(ReceiveTimeout
)向客户端发送“ ping”。在ws://和wss://都运行良好,但是在wss://中每隔5秒就会收到“ 7个操作码”。
我删除了超时并成功了。