Я пытаюсь внедрить систему с двумя клиентами, один из которых отправляет сообщение, а другой должен его получить.Рисунок ниже объяснит это более наглядно:
Итак, клиент 1 отправляет сообщение на сервер (и это работает), сервер получает «push»«message» и выдает «pop» сообщение, которое должно быть принято клиентом 2. Проблема здесь в том, что клиент 2 никогда не получает «pop» сообщение.: (
Вот код для всех них.
SERVER.JS
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' });
});
});
КЛИЕНТ 1 (он же mobile.html))
<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>
КЛИЕНТ 2 (он же web.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 в целом, поэтому некоторые механики для меня все еще немного неясны, поэтому я заранее извиняюсь за свою нелюбовь.:)
cheers
-k-