编辑
解决方案:
在你使用“node server.js”启动连接之后,通过浏览器访问你的IP。不知道为什么,但这对我有效。
问题产生的原因
好吧...在重建切片(如果有必要,托管在slicehost上)并重新安装node和websocket-server之后,我仍然遇到了同样的问题。我检查了一下正常请求是否有效(在浏览器中输入IP),结果是有效的。它似乎也启动了套接字连接,所以现在我也可以通过它们进行连接。
我正在尝试使用node.js和websocket-server模块连接到套接字服务器。
服务器端看起来像这样:
var server = ws.createServer();
server.listen(80);
server.addListener("request", function(req, res) {
res.writeHead(200, {
"Content-Type": "text/plain"
});
res.write("Hey! This is totally not the site you planned to visit.");
res.end();
});
server.addListener("connection", function(conn) {
conn.addListener("readyStateChange", function(readyState) {
});
conn.addListener("open", function() {
});
conn.addListener("close", function() {
});
conn.addListener("message", function(message) {
server.broadcast(conn._id + ": "+message);
});
});
标准流程。当客户端尝试像这样连接时...
if ( window["WebSocket"] ) {
connection = new WebSocket("ws://[my IP]:80/");
connection.onopen = function( event ) {
console.log("connection open");
}
connection.onclose = function( event ) {
console.log("connection closed");
}
connection.onerror= function( event ) {
console.log("connection error");
}
connection.onmessage = function( event ) {
console.log(event.data);
};
}
我遇到了以下错误:
_linklist.js:65
item._idleNext = list._idleNext;
TypeError: 无法读取未定义的属性'_idleNext' 在对象附加 (_linklist.js:65:24) 在活动状态 (timers.js:136:9) 在Socket._writeOut (net.js:461:10)
at Socket.write (net.js:378:17)
at Object.draft76 ([my dir]/npm/node_modules/websocket-server/lib/ws/connection.js:401:28)
at new Connection ([my dir]npm/node_modules/websocket-server/lib/ws/connection.js:165:22)
at Server.<anonymous> ([my dir]npm/node_modules/websocket-server/lib/ws/server.js:72:7)
at Server.emit (events.js:81:20)
at Socket.<anonymous> (http.js:1034:14)
at Socket._onReadable (net.js:684:27)
它曾经运行了一段时间(这可能有些奇怪),然后每次我尝试连接时都会出现这个消息。我没有更改node.js或websocket-server的任何代码。请告诉我为什么会出现这种情况!