socket.io客户端未从服务器接收消息

我正在尝试用两个客户端实现一个系统,其中一个客户端发送一条消息,而另一个客户端将接收该消息。下图将以更直观的方式对其进行解释:

socket.io消息通讯图

因此,客户端1将消息发送到服务器(此工作正常),服务器接收到“推送”消息并发出应由客户端2接收的“弹出”消息。这里的问题是客户端2从未收到“流行”消息。:(

这是所有代码。

var app = require('express').createServer()

, io = require('socket.io').listen(app);

app.listen(999);

app.get('/webclient', function (req, res) {

res.sendfile(__dirname + '/web.html');

});

app.get('/mobile', function (req, res) {

res.sendfile(__dirname + '/mobile.html');

});

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

// socket.emit('pop', { hello: 'world' });

socket.on('push', function (data) {

console.log('push received, emitting a pop');

socket.emit('pop', { hello: 'world' });

});

});

<html>

<head>

<title>

Mobile

</title>

<script src="/socket.io/socket.io.js"></script>

<script src="https://ajax.googleapis.com/ajax/libs/mootools/1.4.5/mootools-yui-compressed.js" type="text/javascript"></script>

<script>

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

</script>

</head>

<body>

<input type="button" name="act" id="push" value="message" />

<script type="text/javascript" charset="utf-8">

window.addEvent('domready', function() {

$('push').addEvent('click', function() {

socket.emit('push', { hello: 'world' });

});

});

</script>

</body>

</html>

<script src  = "/socket.io/socket.io.js"></script>

<script>

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

socket.on('pop', function (data) {

console.log(data);

});

</script>

我只是无法理解客户端2为何未收到“

pop”消息的原因,所以我对socket.io和node.js还是很陌生,所以对我来说有些技巧仍然晦涩难懂,因此我提前道歉我的笨蛋 :)

干杯

-k-

回答:

传递给.on每个套接字的函数进行初始化(绑定事件等),并socket引用该当前套接字。当您收到一条push消息时,它将是客户端1

,因为处理程序函数绑定到该push事件socket-您在客户端1连接时绑定了该函数(此处socket指的是客户端1)。

io.sockets 指所有连接的插座,因此包括您的客户端2。

以上是 socket.io客户端未从服务器接收消息 的全部内容, 来源链接: utcz.com/qa/403658.html

回到顶部