req.socket
如果当前请求 (req
) 来自已连接的 Socket.IO 客户端,则 req.socket
指的是原始的 Socket.IO socket 实例。
req.socket;
警告
req.socket
可能会在未来版本的 Sails 中被弃用。您应该改用sails.sockets.*
方法。
如果当前请求 (req
) 不是来自 Socket.IO 客户端,则 req.socket
不会具有相同的含义。在最常见的情况下——HTTP 请求——req.socket
存在,但它指的是底层的 TCP socket。在使用 req.socket
之前,您应该检查 req.isSocket
标志以确保请求是通过已连接的 Socket.IO 客户端到达的。
req.socket.id
是一个唯一标识符,表示当前的 socket。这是由 Socket.IO 服务器在客户端首次连接时生成的,并且是一个有效的唯一标识符,直到 socket 断开连接(例如,如果客户端是 Web 浏览器,则 req.socket.id
在用户关闭浏览器选项卡之前都是有效的)。
Sails 还提供对 Socket.IO Socket
的所有其他方法和属性的直接、低级访问,包括 req.socket
及其方法 req.socket.join
、req.socket.leave
、req.socket.broadcast
等。查看相关的 Socket.IO 文档 以获取更多信息。
if (req.isSocket) {
// Low-level Socket.io methods and properties accessible on req.socket.
// ...
}
else {
// This is not a request from a Socket.io client, so req.socket
// may or may not exist. If this is an HTTP request, req.socket is actually
// the underlying TCP socket.
// ...
}