【发布时间】:2017-11-12 22:23:28
【问题描述】:
我有一个使用 socket.io 模块的 websocket 服务器的简单 node.js 代码,但我无法让它工作。服务器运行时没有错误,但尝试从浏览器连接时出现“SOCKET ERROR: {"isTrusted":true}" 错误(我没有使用自签名证书,而是经过测试并受浏览器信任的赛门铁克证书) .
这是我的代码:
var fs = require( 'fs' ) ;
var app = require('express')();
var https = require('https');
var server = https.createServer({
key: fs.readFileSync('cert.key'),
cert: fs.readFileSync('cert.cer'),
},app);
server.listen(50100);
var io = require('socket.io').listen(server,{pingTimeout: 7000, pingInterval: 10000});
io.sockets.on('connection',function (socket) {
console.log('new connection');
});
在客户端上,我使用标准 java 脚本“var WS = new WebSocket(wsUri);”,而 wsUri 为“wss://siteaddress:50100”。
我用“ws”节点模块尝试了代码,它似乎工作正常,但“ws”模块没有我需要的所有方法(除非我遗漏了什么——我需要能够将消息发送到选定的套接字或所有套接字一起)并通过套接字连接从客户端发送一些信息)。
我已经尝试了node.js, socket.io with SSL 中的所有建议,但没有一个对我有用。
尝试通过 DEBUG=* node myapp 进行调试 - 这是我在日志中得到的内容:
express:application set "x-powered-by" to true +0ms
express:application set "etag" to 'weak' +7ms
express:application set "etag fn" to [Function: wetag] +2ms
express:application set "env" to 'development' +1ms
express:application set "query parser" to 'extended' +0ms
express:application set "query parser fn" to [Function: parseExtendedQueryString] +1ms
express:application set "subdomain offset" to 2 +0ms
express:application set "trust proxy" to false +1ms
express:application set "trust proxy fn" to [Function: trustNone] +1ms
express:application booting in development mode +2ms
express:application set "view" to [Function: View] +1ms
express:application set "views" to '/opt/bitnami/apache2/wm/node/views' +0ms
express:application set "jsonp callback name" to 'callback' +1ms
socket.io:server initializing namespace / +145ms
socket.io-parser encoding packet {"type":0,"nsp":"/"} +1ms
socket.io-parser encoded {"type":0,"nsp":"/"} as 0 +1ms
socket.io:server creating engine.io instance with opts {"pingTimeout":7000,"pingInterval":10000,"path":"/socket.io","initialPacket":["0"]} +0ms
socket.io:server attaching client serving req handler +10ms
当客户端尝试连接到 websocket 时,日志中没有任何内容。
谁能指出我正确的方向?
谢谢。
【问题讨论】:
-
你给出的错误是什么?
-
我在 Node 中没有收到任何错误,只是客户端浏览器在尝试连接到套接字时出现错误 - “SOCKET ERROR: {"isTrusted":true}"
-
如果不使用 http 而不是 https 进行安全连接,您是否会遇到同样的错误?
-
如果我尝试在不使用 SSL 的情况下执行此操作,则会收到“SecurityError:该操作不安全”。在客户端上,但在服务器上仍然没有。
-
等一下,我会发送我的示例代码,也许它会有所帮助