Reputation: 2199
If I have my express.js
server set up as such:
var express = require('express');
var app = express();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var port = process.env.PORT || 8080;
server.listen(8080);
And elsewhere I have a io.on('connnect', function(socket){...});
, should I be putting emit/event listeners on that socket within the io.connect(...)
callback, or on the io object?
My basic program flow is as follows:
get_new_number
. get_new_number
from unique socket. emits
new_number
new_number
and logs the data within to the console when triggered. On the server-side, for part 2, I believe that must be a within the io.on('connect'...)
function, so I can access socket.id
for use later :
io.on('connect', function(socket){
socket.on('get_new_number', function(){
console.log('server got request for new number.');
globalVarId = socket.id;
});
});
But from there, where should I emit a new number to that unique socket? Say I save the socket.id
and then emit to only it, how can I do that? The below isn't working:
io.on('connect', function(socket){
//get_new_number stuff
socket.to(globalVarId).emit('new_number', {number: someNumber});
});
Should I instead later do a io.to(globalVarId).emit...
?
EDIT: For that matter, is there a way to put event listeners on the io
object, such like
io.on('someEvent', function(socket){
console.log('this socket did a thing, ', socket.id);
});
Upvotes: 0
Views: 122
Reputation: 203231
You can assume that socket
within the callback function represents a unique client/connection.
So when you want to communicate with that client, you can use socket.emit()
:
io.on('connect', function(socket) {
socket.on('get_new_number', function() {
console.log('server got request for new number.');
//get_new_number stuff
socket.emit('new_number', { number: someNumber });
});
});
.to(...).emit(...)
is used for something else entirely (sending a message to a particular room).
Upvotes: 1