簡體   English   中英

為 socket.io 生成自定義套接字 id

[英]Generate custom socket id for socket.io

根據用於生成自定義 id 的 socket.io 文檔,這應該可以工作:

const express = require('express');
const app = express();
const server = require('http').createServer(app);
const io = require('socket.io')(server);
require('dotenv').config();

io.engine.generateId = (req) => {
  // generate a new custom id here
  var randomCode = '';
  for (let r = 0; r < 6; r++) {
    randomCode += Math.floor(Math.random() * 10)+'';
  }
  return randomCode
}

io.on('connection', (socket) => {
  console.log("a user connected :D", socket.id);

  socket.on('storeClientInfo', (data) => {
    console.log(socket.id)
  });

  socket.on("private message", (anotherSocketId, msg) => {
    console.log(anotherSocketId, msg)
    socket.to(anotherSocketId).emit("private message", socket.id, msg);
  });
});

server.listen(4000);
app.listen(process.env.PORT, () => console.log('Server is running'));

但它對我不起作用控制台輸出:

a user connected :D wJ8d-SC2su9YYCdWAAAC

它應該是6個隨機數,隨機數只是為了測試我想稍后將id分配給數據庫中的用戶id。

使用可以將自定義參數分配給套接字

var users = []
io.use((socket, next) => {
  socket.customId = 123456789;
  users[socket.customId] = socket;
  next()
});

你可以使用自定義參數

io.on("connection", (socket) => {
  socket.on("sendPrivateMessage", params => {
    users[params.toUserId].emit("message", "you have a private message")
  })
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM