Monday, June 3, 2024
 Popular · Latest · Hot · Upcoming
16
rated 0 times [  19] [ 3]  / answers: 1 / hits: 32848  / 12 Years ago, fri, march 23, 2012, 12:00:00

I'm trying to implement a system with two clients one of them sends a message and the other one shall receive it.
The figure below will explain it in a more visual way:



socket.io



So, the client 1 send the message to the server (and this works), the server receives a push message and emits a pop message that should be picked up by Client 2.
The problem here is that Client 2 never receives the pop message. :(



Here's the code for all of them.



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' });
});
});


CLIENT 1 ( aka 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>


CLIENT 2 (aka 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>


I just cannot understand the reason why Client 2 does not receive the pop message,
I'm quite new to socket.io and node.js in general so some mechanics to me are still a bit obscure, so I apologize in advance for my noobness. :)



cheers



-k-


More From » node.js

 Answers
69

The function passed to .on is called for each socket to do the initialization (binding events etc), and socket refers to that current socket. This will be client 1 when you receive a push message, because the handler function is bound to the push event of that socket - you bound that function when client 1 connected (where socket refers to client 1).



io.sockets refers to all sockets connected, so including client 2 in your case.


[#86650] Thursday, March 22, 2012, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
zahrafrancisr

Total Points: 176
Total Questions: 105
Total Answers: 99

Location: Svalbard and Jan Mayen
Member since Sun, Sep 25, 2022
2 Years ago
;