/reference/req/req.socket.md
Markdown | 46 lines | 28 code | 18 blank | 0 comment | 0 complexity | 185c6c12279ac2505949003582d06cb0 MD5 | raw file
- # req.socket
- If the current Request (`req`) originated from a connected Socket.io client, `req.socket` refers to the raw Socket.io socket instance.
- ### Usage
- ```js
- req.socket;
- ```
- ### Details
- > **Warning:**
- >
- > `req.socket` may be deprecated in a future release of Sails. You should use the [`sails.sockets.*`](./#!documentation/reference/Sockets) methods instead.
- If the current request (`req`) did NOT originate from a Socket.io client, `req.socket` does not have the same meaning. In the most common scenario, HTTP requests, `req.socket` actually _does exist_, but it refers instead to the underlying TCP socket. Before using `req.socket`, you should check the [`req.isSocket`]() flag to ensure the request arrived via a connected Socket.io client.
- `req.socket.id` is a unique identifier representing the current socket. This is generated by the Socket.io server when a client first connects, and is a valid unique identifier until the socket is disconnected (e.g. if the client is a web browser, until the user closes her browser tab.)
- Sails also provides direct, low-level access to all of the other methods and properties from a Socket.io `Socket`, including `req.socket`, including `req.socket.join`, `req.socket.leave`, `req.socket.broadcast`, and more. See the relevant docs in the [Socket.io wiki](https://github.com/LearnBoost/socket.io/wiki/Rooms) for more information.
- ### Example
- ```js
- 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.
- // ...
- }
- ```
- <docmeta name="uniqueID" value="reqsocket572002">
- <docmeta name="displayName" value="req.socket">