我尝试使用SocketIO从客户端浏览器向我的节点服务器发送数据时遇到了最奇怪的问题。从服务器发送到客户端工作正常,但反过来我得到一个未定义的错误。这里看起来很简单,超级简单。
节点服务器(app.js)
io.on("connection", function(socket) {
socket.on("pageReady", function(data) {
console.log('pageReady called');
console.log(data);
return socket.emit('newline', '###SOCKET STARTED###');
});
socket.on("disconnect", function() {
return console.log('disconnected');
});
});
浏览器(client.js)
var socket;
socket = io.connect("http://localhost:5678");
socket.on("newline", function(data) {
return $('#socketData').append('<li>' + data + '</li>');
});
socket.emit("pageReady", "test");
超级简单吧?没什么特别的。当我从服务器发出时,工作正常,但是当客户端调用&#34; pageReady&#34;时。节点以此响应。
/Volumes/HOME/Users/user/git/sockettest/app.js:89
console.log(data);
^
ReferenceError: data is not defined
数据应该返回&#34; test&#34;,但不是。我做错了什么?
答案 0 :(得分:1)
您的客户端应该在尝试向其发送之前侦听套接字连接:
var socket = io.connect("http://localhost:5678");
socket.on("newline", function(data) {
return $('#socketData').append('<li>' + data + '</li>');
});
socket.on("connect", function() {
socket.emit("pageReady", "test");
});