我正在尝试将websocket从chrome 17扩展连接到本地nodejs服务器。创作后
var websocket = new WebSocket(“ws:// localhost:7055”);
在成功创建websocket实例后,我立即收到onClose事件。
检查websocket是否支持是真的。
if(窗口中的“WebSocket”) log(“这里支持Websockets”);
这里的问题是什么?我希望有人可以帮我解决这个问题。
浏览器通常能够运行websockets,我已经测试过了 与
http://websocket.org/echo.html
“Dark WebSocket Terminal”(Google Extension)也显示了相同的内容 连接到ws:// localhost:7055 /
的行为我也尝试了ws://127.0.0.1:7055 /,结果相同
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);
}
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/');
答案 0 :(得分:1)
您需要一个websocket服务器 - 您在服务器中拥有的只是一个常规的HTTP服务器。最受欢迎的是Socket.IO,在这种情况下,您还需要他们的客户端(他们处理不受支持的浏览器的后备,并支持几个websocket版本)。 SockJS是另一个受欢迎的方案。 WS是另一个。或npm search websocket
。
答案 1 :(得分:0)
您需要在nodejs端使用websocket服务器,例如Socket.IO或ws。现在,您只是使用不会协商websockets的nodejs HTTP。
一旦你运行了socket.io或ws,请确保在进行故障排除时充分利用原因和代码。 E.g。
function onClose(evt) {
log('onclose=>' + ' ' + evt.reason + ', ' + evt.code);
}
答案 2 :(得分:-3)