SocketIO,无法从客户端发送数据

时间:2014-12-09 00:32:41

标签: javascript node.js socket.io

我尝试使用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;,但不是。我做错了什么?

1 个答案:

答案 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");
});