Socket.io: 3xμ—μ„œ GenerateIdκ°€ μž‘λ™ν•˜μ§€ μ•ŠμŒ

에 λ§Œλ“  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 ν˜•μ‹μ„ μ–»μŠ΅λ‹ˆλ‹€.

μ„€μ •

  • OS: Windows 10, Node.jsμ—μ„œ μ‹€ν–‰
  • socket.io 버전: 3.0.0 및 3.0.3

기타 정보(예: μŠ€νƒ 좔적, κ΄€λ ¨ 문제, ν•΄κ²° 방법 μ œμ•ˆ)

였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•Šκ³  ν˜•μ‹μ΄ μ„€μ •λ˜μ§€ μ•Šμ•˜μ„ λΏμž…λ‹ˆλ‹€.

question

λͺ¨λ“  5 λŒ“κΈ€

예, μ˜ˆμƒλ©λ‹ˆλ‹€.

κ΄€λ ¨ 컀밋은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. https://github.com/socketio/socket.io/commit/2875d2cfdfa463e64cb520099749f543bbc4eb15

λ”°λΌμ„œ generateId λ©”μ„œλ“œλŠ” μ—¬μ „νžˆ v3μ—μ„œ μž‘λ™ν•˜μ§€λ§Œ 이제 μ†ŒμΌ“μ˜ id 속성이 μ•„λ‹ˆλΌ sid 쿼리 λ§€κ°œλ³€μˆ˜μ—λ§Œ 영ν–₯을 μ€λ‹ˆλ‹€.

μ‚¬μš© 사둀가 무엇인지 여쭀봐도 λ κΉŒμš”?

였, μ•Œμ•˜μ–΄! 정보에 λŒ€ν•΄μ„œ κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.

id λ₯Ό μž¬μ‚¬μš©ν•˜μ—¬ peer.jsλ₯Ό μ‚¬μš©ν•˜λŠ” 화상 톡화λ₯Ό μœ„ν•΄ λ‹€λ₯Έ ν΄λΌμ΄μ–ΈνŠΈμ— μ „μ†‘ν–ˆμ§€λ§Œ peer.jsλŠ” κ·Έ ν˜•μ‹μ„ μ’‹μ•„ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

ν•˜μ§€λ§Œ 방금 μ»€λ°‹μ—μ„œ λ³΄μ•ˆμƒμ˜ 이유둜 이 μž‘μ—…μ„ μˆ˜ν–‰ν•˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€κ³  μ–ΈκΈ‰ν•œ 것을 λ³΄μ•˜μœΌλ―€λ‘œ 이 문제λ₯Ό 닫을 수 μžˆμ„ 것 κ°™μŠ΅λ‹ˆλ‹€.

감사!

버전 3.0μ—μ„œμ™€ 같이 이 문제λ₯Ό λ‹€μ‹œ μ—΄μ–΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€(λ˜λŠ” μƒˆ λ¬Έμ œκ°€ 생성됨). λ‚˜λŠ” 그것이 더 이상 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 λ“±κΈ‰