Mục đích
Dễ đọc và sử dụng khi không nhớ những lệnh emit trong Socket IO
Danh sách những lệnh Emit trong Socket IO
Mình sẽ viết một tạo một connection Socket IO và bỏ hết lệnh emit vào trong cho dễ hình dung nhé.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | io<span class="token punctuation">.</span><span class="token keyword">on</span><span class="token punctuation">(</span><span class="token string">'connect'</span><span class="token punctuation">,</span> onConnect<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">function</span> onConnect<span class="token punctuation">(</span>socket<span class="token punctuation">)</span>{ <span class="token comment">// Gửi cho tất cả client</span> socket<span class="token punctuation">.</span>emit<span class="token punctuation">(</span><span class="token string">'hello'</span><span class="token punctuation">,</span> <span class="token string">'can you hear me?'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token string">'abc'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Gửi cho tất cả client ngoại trừ người gửi</span> socket<span class="token punctuation">.</span>broadcast<span class="token punctuation">.</span>emit<span class="token punctuation">(</span><span class="token string">'broadcast'</span><span class="token punctuation">,</span> <span class="token string">'hello friends!'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Gửi cho tất cả client trong room 'game' ngoại trừ người gửi</span> socket<span class="token punctuation">.</span><span class="token keyword">to</span><span class="token punctuation">(</span><span class="token string">'game'</span><span class="token punctuation">)</span><span class="token punctuation">.</span>emit<span class="token punctuation">(</span><span class="token string">'nice game'</span><span class="token punctuation">,</span> <span class="token string">"let's play a game"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Gửi cho tất cả client trong room 'game1' và room 'game2' ngoại trừ người gửi</span> socket<span class="token punctuation">.</span><span class="token keyword">to</span><span class="token punctuation">(</span><span class="token string">'game1'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token keyword">to</span><span class="token punctuation">(</span><span class="token string">'game2'</span><span class="token punctuation">)</span><span class="token punctuation">.</span>emit<span class="token punctuation">(</span><span class="token string">'nice game'</span><span class="token punctuation">,</span> <span class="token string">"let's play a game (too)"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Gửi cho tất cả client trong room 'game' bao gồm cả người gửi</span> io<span class="token punctuation">.</span><span class="token operator">in</span><span class="token punctuation">(</span><span class="token string">'game'</span><span class="token punctuation">)</span><span class="token punctuation">.</span>emit<span class="token punctuation">(</span><span class="token string">'big-announcement'</span><span class="token punctuation">,</span> <span class="token string">'the game will start soon'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Gửi cho tất cả client trong namespace 'myNamespace', bao gồm cả người gửi</span> io<span class="token punctuation">.</span><span class="token keyword">of</span><span class="token punctuation">(</span><span class="token string">'myNamespace'</span><span class="token punctuation">)</span><span class="token punctuation">.</span>emit<span class="token punctuation">(</span><span class="token string">'bigger-announcement'</span><span class="token punctuation">,</span> <span class="token string">'the tournament will start soon'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Gửi cho room 'room' trong namespace 'myNamespace', bao gồm cả người gửi</span> io<span class="token punctuation">.</span><span class="token keyword">of</span><span class="token punctuation">(</span><span class="token string">'myNamespace'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token keyword">to</span><span class="token punctuation">(</span><span class="token string">'room'</span><span class="token punctuation">)</span><span class="token punctuation">.</span>emit<span class="token punctuation">(</span><span class="token string">'event'</span><span class="token punctuation">,</span> <span class="token string">'message'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Gửi tin nhắn riêng cho socket đó qua socketId</span> io<span class="token punctuation">.</span><span class="token keyword">to</span><span class="token punctuation">(</span><span class="token punctuation">`</span>${socketId}<span class="token punctuation">`</span><span class="token punctuation">)</span><span class="token punctuation">.</span>emit<span class="token punctuation">(</span><span class="token string">'hey'</span><span class="token punctuation">,</span> <span class="token string">'I just met you'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Gửi không đính kèm file nén</span> socket<span class="token punctuation">.</span>compress<span class="token punctuation">(</span><span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">.</span>emit<span class="token punctuation">(</span><span class="token string">'uncompressed'</span><span class="token punctuation">,</span> <span class="token string">"that's rough"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Việc gửi tin nhắn này cần sự chấp nhận từ client thì mới có thể đến được client</span> socket<span class="token punctuation">.</span>volatile<span class="token punctuation">.</span>emit<span class="token punctuation">(</span><span class="token string">'maybe'</span><span class="token punctuation">,</span> <span class="token string">'do you really need it?'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Gửi dữ liệu liên quan đến hệ nhị phân</span> socket<span class="token punctuation">.</span><span class="token keyword">binary</span><span class="token punctuation">(</span><span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">.</span>emit<span class="token punctuation">(</span><span class="token string">'what'</span><span class="token punctuation">,</span> <span class="token string">'I have no binaries!'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Gửi dữ liệu cho tất cả client sử dụng node</span> io<span class="token punctuation">.</span><span class="token keyword">local</span><span class="token punctuation">.</span>emit<span class="token punctuation">(</span><span class="token string">'hi'</span><span class="token punctuation">,</span> <span class="token string">'my lovely babies'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Gửi đến tất cả client kết nối đến</span> io<span class="token punctuation">.</span>emit<span class="token punctuation">(</span><span class="token string">'an event sent to all connected clients'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> }<span class="token punctuation">;</span> |
Lưu ý
socket.to(socket.id).emit()
sẽ bị lỗi. Lỗi này rất hay gặp khi các bạn muốn send private message. Nếu dùng như thế này sẽ hiểu socket.id là một room chứ ko phải là một socket.Mình sẽ dùng lệnh io.to(
${socketId}
).emit(‘hey’, ‘I just met you’); để gửi tin nhắn riêng.Những tên event bạn không được phép đặt:
- error
- connect
- disconnect
- disconnecting
- newListener
- removeListener
- ping
- pong
Sau khi server disconnected hoặc restart thì conection sẽ được giải phóng hết. Đồng nghĩa với việc gửi tin nhắn private qua socket.id sẽ phải thực hiện theo socket.id mới mà connection tạo ra.
Lời kết
Đây là tất cả các lệnh Emit trong Socket IO mọi người khi mới dùng socketio có thể lưu lại ở note trên máy để có thể tiện sử dụng. Chúc mọi người làm việc tốt nhé .
Link tham khảo:
https://socket.io/docs/emit-cheatsheet/