jdc*_*589 10 javascript node.js socket.io
使用socket.io只是为了概念验证,到目前为止,everthing工作得很好,除了我无法让我的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"});
});
});
Run Code Online (Sandbox Code Playgroud)
客户端:( 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>
Run Code Online (Sandbox Code Playgroud)
Lim*_*ime 22
看起来你有一些逻辑转换,试试......
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
socket.emit("getSomeData",{data: "some random data"});
});
Run Code Online (Sandbox Code Playgroud)
和客户......
<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>
Run Code Online (Sandbox Code Playgroud)
编辑:
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
socket.on("getSomeData", function(name,fn) {
fn({data: "some random data"});
});
});
Run Code Online (Sandbox Code Playgroud)
客户
<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>
Run Code Online (Sandbox Code Playgroud)
在Liam William的回答中,我发现有必要将回调(或确认函数)作为客户端发出的第三个参数发送:
客户:
<script src="http://localhost/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost');
socket.emit("getSomeData", null, function(data) {
console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33372 次 |
| 最近记录: |