Клиент немедленно отключается (Chrome Extension Websocket Client + NodeJS Server) - PullRequest
1 голос
/ 02 марта 2012

Я пытаюсь подключиться через websocket с расширения chrome 17 к локальному серверу nodejs. После создания

var websocket = new WebSocket ("ws: // localhost: 7055");

После успешного создания экземпляра websocket я немедленно получаю событие onClose.

Проверка, поддерживается ли websocket, является верной.

if ("WebSocket" в окне) log («здесь поддерживаются веб-сокеты»);

ЧТО ТАКОЕ ПРОБЛЕМА? Я надеюсь, что кто-нибудь может мне помочь с этим вопросом.

Браузер, как правило, может запускать веб-сокеты, я проверил его с

http://websocket.org/echo.html

Также «Темный терминал WebSocket» (расширение Google) показывает то же самое поведение при подключении к ws: // localhost: 7055 /

Я пробовал также с ws: //127.0.0.1: 7055 /, тот же результат

код клиента (расширение Chrome 17)

runSockets("ws://localhost:7055");

function runSockets(wsUri) {
if ("WebSocket" in window) 
    log("Websockets are supported here "); 

var websocket = new WebSocket(wsUri);
log("Web Socket created with the state "+ websocket.readyState);

websocket.onopen = function(evt) { onOpen(evt) };
websocket.onclose = function(evt) { onClose(evt) };
websocket.onmessage = function(evt) { onMessage(evt) };
websocket.onerror = function(evt) { onError(evt) };
}

function onOpen(evt) {
  log("CONNECTED");
  doSend("WebSocket connected");
}

function onClose(evt) {
  log("DISCONNECTED");
}

function onMessage(evt) {
  log("RESPONSE: " + evt.data);
  websocket.close();
}

function onError(evt) {
  log("ERROR: " + evt.data);
}

function doSend(message {
  log("SENT: " + message); 
  websocket.send(message);
}

код сервера (nodejs v0.6.11)

var http = require('http');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\r\n');
}).listen(7055, 'localhost');

console.log('Server running at http://localhost:7055/');

Ответы [ 3 ]

1 голос
/ 02 марта 2012

Вам нужен сервер веб-сокетов - у вас на сервере есть обычный HTTP-сервер.Самым популярным является Socket.IO , в этом случае вам также нужен их клиент (они обрабатывают резервные копии для неподдерживаемых браузеров и поддерживают несколько версий веб-сокетов). SockJS - еще один популярный пакет. WS еще один.Или npm search websocket.

0 голосов
/ 05 февраля 2015

Вам необходим сервер веб-сокетов на стороне nodejs, например Socket.IO или ws .Прямо сейчас вы просто используете nodejs HTTP, который не будет согласовывать веб-сокеты.

После запуска socket.io или ws обязательно используйте причину и код при устранении неполадок.Например,

function onClose(evt) {
   log('onclose=>' + ' ' + evt.reason + ', ' + evt.code);   
}
0 голосов
/ 02 марта 2012

вы должны использовать express и Socket.io , чтобы сделать вашу жизнь проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...