Bất cứ phiên bản nào chúng tôi đang sử dụng nếu chúng tôi chỉ console.log () đối tượng "io" mà chúng tôi sử dụng trong mã nodejs phía máy chủ của chúng tôi, [ví dụ: io.on ('Connection', function (socket) {...});] , chúng ta có thể thấy rằng "io" chỉ là một đối tượng json và có nhiều đối tượng con trong đó các đối tượng socket id và socket được lưu trữ.
Tôi đang sử dụng socket.io phiên bản 1.3.5, btw.
Nếu chúng ta nhìn vào đối tượng io, nó chứa,
sockets:
{ name: '/',
server: [Circular],
sockets: [ [Object], [Object] ],
connected:
{ B5AC9w0sYmOGWe4fAAAA: [Object],
'hWzf97fmU-TIwwzWAAAB': [Object] },
ở đây chúng ta có thể thấy các socket "B5AC9w0sYmOGwe4fAAAA", v.v. Vì vậy, chúng ta có thể làm,
io.sockets.connected[socketid].emit();
Một lần nữa, khi kiểm tra thêm, chúng ta có thể thấy các phân đoạn như,
eio:
{ clients:
{ B5AC9w0sYmOGWe4fAAAA: [Object],
'hWzf97fmU-TIwwzWAAAB': [Object] },
Vì vậy, chúng ta có thể lấy một ổ cắm từ đây bằng cách làm
io.eio.clients[socketid].emit();
Ngoài ra, dưới động cơ chúng ta có,
engine:
{ clients:
{ B5AC9w0sYmOGWe4fAAAA: [Object],
'hWzf97fmU-TIwwzWAAAB': [Object] },
Vì vậy, chúng ta cũng có thể viết,
io.engine.clients[socketid].emit();
Vì vậy, tôi đoán chúng ta có thể đạt được mục tiêu của mình theo bất kỳ cách nào trong 3 cách tôi liệt kê ở trên,
- io.sockets.connected [socketid] .emit (); HOẶC LÀ
- io.eio.clents [socketid] .emit (); HOẶC LÀ
- io.engine.clents [socketid] .emit ();