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