[socket.io] The Socket instance (server-side)
14369 ワード
本文
The Socket instance (server-side)
その他:イベント送受信 放送活動 部屋参加と退出 Socketインスタンスには、いくつかのプロパティがあります.
Socket#id
各新しい接続には、任意の20文字の識別子が割り当てられています.
この識別子は、クライアントの値と同期します.
Socket#handshake
このオブジェクトはSocketです.IOセッションの開始時に発生した握手の詳細が含まれています.
コンセントは現在の部屋を参照します.
既存のアトリビュートを上書きしない限り、すべてのアトリビュートをSocketインスタンスに接続して後で使用できます. このイベントは、接続解除時にSocketインスタンスによって開始されます. このイベントは
The Socket instance (server-side)
その他:
Socket#id
各新しい接続には、任意の20文字の識別子が割り当てられています.
この識別子は、クライアントの値と同期します.
// server-side
io.on("connection", (socket) => {
console.log(socket.id); // ojIckSD2jqNzOqIrAGzL
});
// client-side
socket.on("connect", () => {
console.log(socket.id); // ojIckSD2jqNzOqIrAGzL
});
作成時、コンセントはIDで識別された部屋に参加します.つまり、個人情報に使用できます.io.on("connection", socket => {
socket.on("private message", (anotherSocketId, msg) => {
socket.to(anotherSocketId).emit("private message", socket.id, msg);
});
});
注:この識別子はSocketです.IOコードベースの複数の部分で使用されているため、上書きできません.Socket#handshake
このオブジェクトはSocketです.IOセッションの開始時に発生した握手の詳細が含まれています.
{
headers: /* the headers of the initial request */
query: /* the query params of the initial request */
auth: /* the authentication payload */
time: /* the date of creation (as string) */
issued: /* the date of creation (unix timestamp) */
url: /* the request URL string */
address: /* the ip of the client */
xdomain: /* whether the connection is cross-domain */
secure: /* whether the connection is secure */
}
Socket#roomsコンセントは現在の部屋を参照します.
io.on("connection", (socket) => {
console.log(socket.rooms); // Set { <socket.id> }
socket.join("room1");
console.log(socket.rooms); // Set { <socket.id>, "room1" }
});
Additional attributes既存のアトリビュートを上書きしない限り、すべてのアトリビュートをSocketインスタンスに接続して後で使用できます.
// in a middleware
io.use(async (socket, next) => {
try {
const user = await fetchUser(socket);
socket.user = user;
} catch (e) {
next(new Error("unknown user"));
}
});
io.on("connection", (socket) => {
console.log(socket.user);
// in a listener
socket.on("set username", (username) => {
socket.username = username;
});
});
Eventsdisconnect
io.on("connection", (socket) => {
socket.on("disconnect", (reason) => {
// ...
});
});
disconnecting
disconnect
に似ていますが、socket#romess setがまだ空でない場合は、より早く開始されます.io.on("connection", (socket) => {
socket.on("disconnecting", (reason) => {
for (const room of socket.rooms) {
if (room !== socket.id) {
socket.to(room).emit("user has left", socket.id);
}
}
});
});
注意:connect
、connect_error
、newListener
、およびremoveListener
は、アプリケーションが使用すべきでない特別なイベントです.// BAD, will throw an error
socket.emit("disconnect");
Reference
この問題について([socket.io] The Socket instance (server-side)), 我々は、より多くの情報をここで見つけました https://velog.io/@hyex/socket.io-The-Socket-instance-server-sideテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol