Невозможно подключиться к веб-сокету в узле js - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть веб-сокет с URL "ws: // localhost: 1122", работающий на моей машине. Я могу подключиться к веб-сокету при использовании его с обычным javascript и развертывании на сервере Jetty.

Но при использовании узла js я не смог подключиться к веб-сокету. Я использую следующий код в обоих случаях

var socket = new WebSocket(URL);

При использовании узла js я добавил следующее var WebSocket = require("ws"). Но состояние готовности сокета никогда не становится ОТКРЫТОМ в узле js.

Есть ли что-то, чего мне не хватает в узле js, потому что при использовании Jetty в качестве сервера и обычного 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 голосов
/ 14 ноября 2018

Из-за асинхронного характера 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);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...