无法连接到节点js中的Websocket

时间:2018-11-14 13:11:08

标签: javascript node.js websocket

我的机器中运行着一个带有URL“ ws:// localhost:1122”的websocket。将其与普通javascript一起使用并将其部署在码头服务器中时,我能够连接到websocket。

但是在使用节点js时,我无法连接到Web套接字。我在两种情况下都使用以下代码

var socket = new WebSocket(URL);

在使用节点js时,我添加了以下var WebSocket = require("ws")。但是套接字的readyState永远不会在节点js中变为OPEN。

Node js中是否缺少任何内容,因为当使用码头作为服务器和普通的javascript时,我能够连接到网络套接字。

这是我的app.js

var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World\n');
}).listen(1131, "localhost");
var WebSocket = require("ws");
var wsUri = "ws://localhost:1122";
var socket;
printer();
function printer() {    
 socket = new WebSocket(wsUri);    
 console.log(socket.readyState);    
}

1 个答案:

答案 0 :(得分:1)

由于Node.js的异步特性,socket.readyState不能立即反映连接状态。

相反,您应该使用事件发射器接口检查是否/何时建立连接:

socket = new WebSocket(wsUri);
socket.on('open', function() {
  console.log('connection opened');
}).on('close', function() {
  console.log('connection closed');
}).on('error', function(e) {
  console.log('connection error', e);
});