只是为了概念验证而深入研究socket.io,到目前为止一切都运作得很好,除了我无法在客户端使我的emit回调函数工作。我肯定在这里错过了一些愚蠢的东西,但目前文档并不完美。服务器成功地接收到“getSomeData”事件,没有任何错误。
根据我从客户端socket.io源码中了解到的信息,它检查emit的最后一个参数是否为函数,并始终将其用作回调,但对我来说,要深入调试比较困难。
我觉得我一定在这里缺少了一些核心概念...这难道不是this.send(..)
应该做的吗?我在示例应用程序中只找到了1个用法,并且没有可用于该事件发射的客户端代码。
更新:只是为了明确,我实际上是有意在客户端发射事件的。这样做的目的是看看是否可以使用socket.io允许客户端在请求时拉取数据,以及接收推送。
服务器:
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
socket.on("getSomeData", function() {
this.send({data: "some random data"});
});
});
客户端: (console.log从未发生)
<script type="text/javascript" src="http://localhost/socket.io/socket.io.js"></script>
<script type="text/javascript">
var socket = io.connect('http://localhost');
socket.emit("getSomeData", function(data) {
console.log(data);
});
</script>
get
和set
的等效函数。我不会过度复杂化任何事情。使用emit
来调用一个函数,使用on
来设置它。 - Lime