SocketIO,不能发送来自客户端的数据

尝试使用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"); 

超级简单吧? 没什么特别的。 当我从服务器发出时,工作正常,但是当客户端调用“pageReady”。 节点用这个响应。

 /Volumes/HOME/Users/user/git/sockettest/app.js:89 console.log(data); ^ ReferenceError: data is not defined 

数据应该返回“testing”,但不是。 我究竟做错了什么?

您的客户端应该在尝试发送到它之前监听套接字连接:

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