[REDIS] Node.js를 + 레디 스에 사용자와 소켓 쌍을 처리하는 방법
REDISNode.js를 + 레디 스에 사용자와 소켓 쌍을 처리하는 방법
스트레이트 포인트 : 나는, Node.js를 사용하고 Socket.IO에 전용 채팅 시스템 레디 스.
접속 사용자에 Node.js를 서버에 자신의 웹 사이트 ID (아이디)를 전달합니다. 어떻게 든 (각 연결의) socketID 및 사용자 ID를 페어링 그래서 그는 여러 개의 연결을 가질 수있다. 나는 userID-> sessionID와 쌍을 저장하는 레디 스를 사용하는 방법에 대해 생각했다. 그러나 사용자의 연결을 끊 내가 레디 스에서 해당 쌍을 제거해야합니다 ..하지만 난 그 키를 선택할 수 있도록 난 단지 사용자 ID하지 socketID 때 ..
지금, 나는이 잘못된 방향으로 접근하고 또는 둘 다 userID-> socketID 및 socketID-> 아이디 쌍을 저장해야? 어쩌면 누군가가 더 우아한 솔루션을 제공 할 수 있을까?
해결법
-
==============================
1.더 우아한 해결책은 예를 들어, 채널 아이디로 각 소켓에 연결할 수 있도록하는 것입니다 :
더 우아한 해결책은 예를 들어, 채널 아이디로 각 소켓에 연결할 수 있도록하는 것입니다 :
io.sockets.on('connection', function (socket) { socket.join(userID); }); // when you want somebody to send a message to userID you can do: io.sockets.in(userID).emit(message);
당신이 알아서해야 할 두 가지가 있습니다 :
다른 사용자가 사용자 ID에 메시지를 보낼 때, 그들은 사용자 아이디 채널에 연결할 필요가 없습니다, 그들은 채팅 채널에 메시지를 보내 속성으로 사용자 ID를 전달할 수 있습니다. 예를 들면 :
var chat = io .of('/chat') .on('connection', function (socket) { // connected to public chat }) .on('message', function (data) { if (data.userID && data.message) { io.sockets.in(userID).emit('UserX: ' + data.message); } });
from https://stackoverflow.com/questions/8567015/how-to-handle-user-and-socket-pairs-with-node-js-redis by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 어떻게 레디 스의 마스터 / 슬레이브 상태를 알고? (0) | 2020.01.18 |
---|---|
[REDIS] 어떻게 모든 MQ 플랫폼에서 큐 분산이 하나의 동시성을 구현할 수있다? (0) | 2020.01.17 |
[REDIS] 어떻게 레디 스에서 루아 스크립트의 실행 시간을 결정? (0) | 2020.01.17 |
[REDIS] 레디 스, Node.js를, 그리고 Socket.io : 크로스 서버 인증과 이해 Node.js를 (0) | 2020.01.17 |
[REDIS] 레디 스는 사전 순 이외의 정렬, zrevrangebyscore (0) | 2020.01.17 |