socket.io:客户端发出的回调永远不会触发

仅仅为了概念验证而使用socket.io,到目前为止,一切工作都很好,除了我无法在客户端实现我的emit回调。我必须在这里丢失一些愚蠢的东西,但是文档目前还不是杀手。服务器可以很好地拾取“

getSomeData”事件,并且在任何地方都没有错误。

根据我在客户端socket.io源代码中看到的信息,它检查发出的最后一个参数是否是一个函数,并始终将其用作回调,但是对任何更深层的调试对我来说都是成问题的。

我觉得我这里必须缺少一些核心概念。这不是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>

回答:

看来您已经改变了一些逻辑,请尝试…

var io = require('socket.io').listen(80);

io.sockets.on('connection', function (socket) {

socket.emit("getSomeData",{data: "some random data"});

});

和客户…

<script src="http://localhost/socket.io/socket.io.js"></script>

<script>

var socket = io.connect('http://localhost');

socket.on("getSomeData", function(data) {

console.log(data);

});

</script>

var io = require('socket.io').listen(80);

io.sockets.on('connection', function (socket) {

socket.on("getSomeData", function(name,fn) {

fn({data: "some random data"});

});

});

客户

<script src="http://localhost/socket.io/socket.io.js"></script>

<script>

var socket = io.connect('http://localhost');

socket.emit("getSomeData", function(data) {

console.log(data);

});

</script>

以上是 socket.io:客户端发出的回调永远不会触发 的全部内容, 来源链接: utcz.com/qa/402768.html

回到顶部