Socket.io: GenerateId 不能在 3x 上工作

创建于 2020-11-23  ·  5评论  ·  资料来源: socketio/socket.io

我想要:

  • [x] 报告错误
  • [ ] 请求功能

当前行为

在 v2.3.0 中设置io.engine.generateId时,套接字 id 会相应设置。
在 3x(在 3.0.0 和 3.0.3 上测试)中,它们不是。

重现步骤

在 Node.js 中:

const express = require('express');
const app = express();
const server = require('http').Server(app);
const io = require('socket.io')(server);
const { v4: uuidv4 } = require('uuid');

io.engine.generateId = function (req)
{
    return uuidv4();
}

预期行为

在 v2.3.0 中工作时,套接字 id 的预期格式应该是,在这种情况下,“xxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,是 x 字母数字。 相反,我获得了默认的套接字 ID 格式。

设置

  • 操作系统:Windows 10,在 Node.js 上运行
  • socket.io 版本:3.0.0 和 3.0.3

其他信息(例如堆栈跟踪、相关问题、如何修复的建议)

不会抛出任何错误,只是没有设置格式。

question

所有5条评论

是的,这是预期的。

这是相关的提交: https :

所以, generateId方法在 v3 中仍然有效,但它现在只会影响sid查询参数,而不是套接字的id属性。

请问你的用例是什么?

哦好的! 谢谢(你的)信息。

我正在重用id将它传输到其他客户端以使用 peer.js 进行视频通话,但 peer.js 不喜欢它的格式。

但是我刚刚在提交中看到您提到出于安全原因我不应该这样做,所以我想我可以关闭这个问题。

谢谢!

我认为应该重新打开这个问题(或创建一个新问题),因为在 3.0 版中,似乎没有调用 generateId 函数。 我知道它不再替换 socket.id 属性,但@darrachequesne较早的评论表明它正在更改不同的属性。

但是,根据文档,执行以下操作:

const content = require('fs').readFileSync(__dirname + '/index.html', 'utf8');

const httpServer = require('http').createServer((req, res) => {
  // serve the index.html file
  res.setHeader('Content-Type', 'text/html');
  res.setHeader('Content-Length', Buffer.byteLength(content));
  res.end(content);
});

const io = require('socket.io')(httpServer);
io.engine.generateId((req) => {
  console.log('This line is never executed');
  return new Date().valueOf().toString()
});

io.on('connection', socket => {
  console.log('connect');
  console.log(socket.sid);
});

httpServer.listen(3000, () => {
  console.log('go to http://localhost:3000');
});

该函数永远不会被调用。

@BrianHVB我认为您的代码示例中有一个错字:

io.engine.generateId = ((req) => {
  console.log('This line is never executed');
  return new Date().valueOf().toString()
});

你能确认它解决了这个问题吗?

@darrachequesne - 糟糕,是的,确实如此。 谢谢你。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

dmuth picture dmuth  ·  3评论

doughsay picture doughsay  ·  4评论

gCurtisCT picture gCurtisCT  ·  4评论

varHarrie picture varHarrie  ·  3评论

Elliot9 picture Elliot9  ·  4评论