tutorial socket rooms example socket.io

rooms - socket.io https



Socket.IO suscribirse a mĂșltiples canales (1)

Todo esto es bastante sencillo con la característica de las habitaciones socket.io. Eche un vistazo a la documentación en la wiki de LearnBoost.

https://github.com/LearnBoost/socket.io/wiki/Rooms

Permite estar conectado a múltiples habitaciones en un solo socket. Hice una prueba rápida con el siguiente código.

Servidor

io.sockets.on(''connection'', function(socket){ socket.on(''subscribe'', function(room) { console.log(''joining room'', room); socket.join(room); }) socket.on(''unsubscribe'', function(room) { console.log(''leaving room'', room); socket.leave(room); }) socket.on(''send'', function(data) { console.log(''sending message''); io.sockets.in(data.room).emit(''message'', data); }); });

Cliente

var socket = io.connect(); socket.on(''message'', function (data) { console.log(data); }); socket.emit(''subscribe'', ''roomOne''); socket.emit(''subscribe'', ''roomTwo''); $(''#send'').click(function() { var room = $(''#room'').val(), message = $(''#message'').val(); socket.emit(''send'', { room: room, message: message }); });

Enviar un mensaje desde una ruta Express también es bastante simple.

app.post(''/send/:room/'', function(req, res) { var room = req.params.room message = req.body; io.sockets.in(room).emit(''message'', { room: room, message: message }); res.end(''message sent''); });

Quiero construir un sistema de sala de chat simple encima de Socket.IO donde el usuario puede crear una nueva sala de chat y luego las personas pueden comenzar a chatear.

Esto suena simple pero como el Socket.IO 0.9.4 estoy ejecutando ahora, después de leer algunas publicaciones de SO junto con el documento en socket.io, cada vez me siento más confundido. Entonces, espero que alguien pueda proporcionarme las instrucciones que TRABAJEN con 0.9.4:

  1. Necesito una forma de suscribirme a una habitación. El nombre de la habitación es elegido por el usuario. Cuando se publica un mensaje en una sala, el usuario debe recibirlo. ¿Cómo debería escribir el código del servidor, cómo debería escribir el código del cliente?

  2. Un usuario puede unirse a varias salas simultáneamente.

  3. Quiero que otro sistema envíe un mensaje a todos los usuarios en una habitación determinada. Este ''otro sistema'' envía el mensaje a través de una solicitud manejada por express. ¿Cómo escribiría ese controlador de solicitud?