繁体   English   中英

与SSL的socket.io无法正常工作

[英]socket.io with ssl not working

我有一个使用socket.io模块的websocket服务器的简单node.js代码,但我无法使其工作。 服务器正常运行,但是尝试从浏览器连接时,出现“ 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”节点模块尝试了代码,它似乎可以正常工作,但是“ ws”模块没有我需要的所有方法(除非我遗漏了一些东西,我需要能够将消息发送到选定的套接字或所有套接字一起并通过套接字连接从客户端发送一些信息)。
我已经尝试过使用SSLnode.js,socket.io中的所有建议,但是没有一个对我有用
尝试通过DEBUG = *节点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 express = require('express');
var app = express();
var server = app.listen(8080);
var io = require('socket.io').listen(server);`

客户端:

<script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>

var mySocket = io.connect('localhost:8080', {transports: 
 ['websocket'], reconnection: false,secure:false}); 

mySocket.on('connect', function () {
    mySocket.sendBuffer=[]
    console.log('Connected!');
});  

如果你的浏览器loged connected意味着建立连接

尝试通过相应的端口添加运输方式和起点

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

添加:

io.set('transports', ['websocket']); io.set('origins', 'YOUR_ORIGIN:*');

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM