Ir al contenido principal
Latest blog post (July 25, 2024): npm package provenance.
Versión: 4.x

Hoja de referencia de emit

precaución

Los siguientes nombres de eventos están reservados y no deben usarse en tu aplicación:

  • connect
  • connect_error
  • disconnect
  • disconnecting
  • newListener
  • removeListener
// MAL, lanzará un error
socket.emit("disconnecting");

Servidor

Cliente único

Emit básico

io.on("connection",(socket)=>{
socket.emit("hello",1,"2",{3:"4",5:Buffer.from([6])});
});

Acknowledgement

  • Callback
  • Promise
io.on("connection",(socket)=>{
socket.emit("hello","world",(arg1, arg2, arg3)=>{
// ...
});
});

Acknowledgement y timeout

  • Callback
  • Promise
io.on("connection",(socket)=>{
socket.timeout(5000).emit("hello","world",(err, arg1, arg2, arg3)=>{
if(err){
// el cliente no confirmó el evento en el tiempo dado
}else{
// ...
}
});
});

Broadcasting

A todos los clientes conectados

io.emit("hello");

Excepto el emisor

io.on("connection",(socket)=>{
socket.broadcast.emit("hello");
});

Acknowledgements

  • Callback
  • Promise
io.timeout(5000).emit("hello","world",(err, responses)=>{
if(err){
// algunos clientes no confirmaron el evento en el tiempo dado
}else{
console.log(responses);// una respuesta por cliente
}
});

En una sala

  • a todos los clientes conectados en la sala llamada "my room"
io.to("my room").emit("hello");
  • a todos los clientes conectados excepto los de la sala llamada "my room"
io.except("my room").emit("hello");
  • con múltiples cláusulas
io.to("room1").to(["room2","room3"]).except("room4").emit("hello");

En un namespace

io.of("/my-namespace").emit("hello");
consejo

Los modificadores pueden absolutamente encadenarse:

io.of("/my-namespace").on("connection",(socket)=>{
socket
.timeout(5000)
.to("room1")
.to(["room2","room3"])
.except("room4")
.emit("hello",(err, responses)=>{
// ...
});
});

Esto emitirá un evento "hello" a todos los clientes conectados:

  • en el namespace llamado my-namespace
  • en al menos una de las salas llamadas room1, room2 y room3, pero no en room4
  • excepto el emisor

Y espera un acknowledgement en los próximos 5 segundos.

Entre servidores

Emit básico

io.serverSideEmit("hello","world");

Lado receptor:

io.on("hello",(value)=>{
console.log(value);// "world"
});

Acknowledgements

  • Callback
  • Promise
io.serverSideEmit("hello","world",(err, responses)=>{
if(err){
// algunos servidores no confirmaron el evento en el tiempo dado
}else{
console.log(responses);// una respuesta por servidor (excepto el actual)
}
});

Lado receptor:

io.on("hello",(value, callback)=>{
console.log(value);// "world"
callback("hi");
});

Cliente

Emit básico

socket.emit("hello",1,"2",{3:"4",5:Uint8Array.from([6])});

Acknowledgement

  • Callback
  • Promise
socket.emit("hello","world",(arg1, arg2, arg3)=>{
// ...
});

Acknowledgement y timeout

  • Callback
  • Promise
socket.timeout(5000).emit("hello","world",(err, arg1, arg2, arg3)=>{
if(err){
// el servidor no confirmó el evento en el tiempo dado
}else{
// ...
}
});

AltStyle によって変換されたページ (->オリジナル) /