Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js ssl不工作的socket.io_Node.js_Ssl_Socket.io - Fatal编程技术网

Node.js ssl不工作的socket.io

Node.js ssl不工作的socket.io,node.js,ssl,socket.io,Node.js,Ssl,Socket.io,我使用socket.io模块为websocket服务器编写了一个简单的node.js代码,但我无法让它正常工作。服务器运行时没有错误,但当尝试从浏览器连接时,我收到套接字错误:{isTrusted:true}错误我使用的不是自签名证书,而是经过测试并受浏览器信任的Symantec证书。 A这是我的代码: var fs = require( 'fs' ) ; var app = require('express')(); var https = require('https'); var ser

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

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-WebSocketwsUri;而wsUri是wss://siteaddress:50100. 我尝试了ws-node模块的代码,它似乎工作得很好,但ws-module没有我需要的所有方法,除非我缺少一些东西-我需要能够将消息发送到选定的套接字或所有套接字,并在套接字连接上从客户端发送一些信息。 我尝试了所有的建议,但没有一个对我有效。 已尝试通过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!');
});  
如果您的浏览器已登录连接,则表示已建立连接

服务器端:

`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!');
});  

如果您的浏览器登录已连接,则表示已建立连接

请尝试使用相应的端口添加传输和源站

在var io=require'socket.io'之后。listenserver

添加以下内容:

io.set'transports',['websocket']; 设置'origins','YOUR_ORIGIN:'


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

尝试使用相应的端口添加传输和源

在var io=require'socket.io'之后。listenserver

添加以下内容:

io.set'transports',['websocket']; 设置'origins','YOUR_ORIGIN:'


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

您给出的错误是什么?我在节点中没有收到任何错误,只是尝试连接到套接字时在客户端浏览器上出现错误-套接字错误:{isTrusted:true}如果不使用http而不是https进行安全连接,是否会出现相同的错误?如果我尝试在不使用SSL的情况下执行此操作,则会出现SecurityError:操作不安全。在客户端上,但在服务器上仍然没有任何内容。请稍候,我将发送我的示例代码可能会有所帮助。您给出的错误是什么?我在节点中没有收到任何错误,只是在尝试连接到套接字时在客户端浏览器上出现错误-套接字错误:{isTrusted:true}如果不使用http而不是https进行安全连接,是否会出现相同的错误?如果我尝试在不使用SSL的情况下执行此操作,则会出现SecurityError:操作不安全。在客户端上,服务器上仍然没有任何内容。请稍候,我将发送我的示例代码可能对您的代码有帮助我正在获取到“ws://mysite:8080/socket.io/?EIO=3&transport=WebSocket”的WebSocket连接失败:在收到握手响应之前连接已关闭。我注意到secure被设置为false——如果我想使用SSL,那么它不应该是true吗?我尝试了它,得到了相同的结果。而且我相信,由于最近几个版本的Firefox不允许不安全的websocket连接。感谢您的代码,我正在获得到“ws://mysite:8080/socket.io/?EIO=3&transport=WebSocket”的WebSocket连接失败:在收到握手响应之前连接已关闭。我注意到secure被设置为false——如果我想使用SSL,那么它不应该是true吗?我尝试了它,得到了相同的结果。而且我相信,由于最近几个版本的Firefox不允许不安全的websocket连接。谢谢