Estoy tratando de implementar un sistema con dos clientes, uno de ellos envía un mensaje y el otro lo recibirá. la siguiente figura se explicará de una manera más visual:socket.io cliente que no recibe mensajes del servidor
Por lo tanto, el cliente 1 envía el mensaje al servidor (y esto funciona), el servidor recibe un mensaje de "empuje" y emite una mensaje "pop" que debería ser recogido por el Cliente 2. El problema aquí es que el Cliente 2 nunca recibe el mensaje "emergente". :(
Aquí está el código para todos ellos.
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' });
});
});
CLIENTE 1 (también conocido como 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>
cliente 2 (también conocido como 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>
No puedo entender la razón por cliente 2 no recibe el mensaje de "pop", Soy bastante nuevo en Socket.IO y Node.js, en general, por lo que algunos mecánicos para mí son todavía un poco oscura , entonces me disculpo de antemano por mi noobness. :)
aplausos
-k-
No tengo experiencia con socket.io, pero si no me equivoco, 'socket' se referirá al mismo socket desde el que recibió el mensaje. ¿Podría probar 'io.sockets.emit' en su lugar? – pimvdb
funciona como un encanto!si quieres hacer una respuesta, puedo marcarla como correcta y obtener un +1 :) – holographix
+1 para una pregunta interesante bien hecha y formateada – beny23