gpt4 book ai didi

node.js - 带有 ssl 的 socket.io 不工作

转载 作者:太空宇宙 更新时间:2023-11-03 13:06:08 24 4
gpt4 key购买 nike

我有一个简单的 node.js 代码用于使用 socket.io 模块的 websocket 服务器,但我无法让它工作。服务器运行没有错误,但是当尝试从浏览器连接时,我收到“SOCKET ERROR:{“isTrusted”:true}”错误(我没有使用自签名证书,而是经过测试并受浏览器信任的 Symantec 证书) .
这是我的代码:

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” Node 模块尝试了代码,它似乎工作正常但“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 时,日志中没有任何内容。
谁能指出我正确的方向?
谢谢。

最佳答案

尝试添加运输和具有相应端口的来源

var io = require('socket.io').listen(server ....) 之后

添加这个:

io.set('传输', ['websocket']);
io.set('起源', 'YOUR_ORIGIN:*');

检查您的规则是否在 apache 或 nginx 上正确设置,以便您拥有 wss。

关于node.js - 带有 ssl 的 socket.io 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44482549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com