모든 사용자에게 메시지를 방송하기위한 코드를 작성했습니다 .
// websocket and http servers
var webSocketServer = require('websocket').server;
...
...
var clients = [ ];
var server = http.createServer(function(request, response) {
// Not important for us. We're writing WebSocket server, not HTTP server
});
server.listen(webSocketsServerPort, function() {
...
});
var wsServer = new webSocketServer({
// WebSocket server is tied to a HTTP server.
httpServer: server
});
// This callback function is called every time someone
// tries to connect to the WebSocket server
wsServer.on('request', function(request) {
...
var connection = request.accept(null, request.origin);
var index = clients.push(connection) - 1;
...
주의하십시오 :
- 사용자 참조가 없지만 연결 만 있습니다.
- 모든 사용자 연결은
array
.
목표 : Node.js 서버가 특정 클라이언트 (John)에게 메시지를 보내려고한다고 가정 해 보겠습니다. NodeJs 서버는 John이 어떤 연결을 가지고 있는지 어떻게 알 수 있습니까? Node.js 서버는 John조차 모릅니다. 보이는 것은 연결뿐입니다.
따라서 이제는 연결만으로 사용자를 저장해서는 안되며, 대신 userId
및 connection
개체를 포함 할 개체를 저장해야 합니다.
생각:
페이지로드가 완료되면 (DOM 준비)-Node.js 서버에 대한 연결을 설정합니다.
Node.js 서버가 연결을 수락하면 고유 한 문자열을 생성하여 클라이언트 브라우저로 보냅니다. 사용자 연결 및 고유 문자열을 개체에 저장합니다. 예 :
{UserID:"6", value: {connectionObject}}
클라이언트 측에서이 메시지가 도착하면 숨겨진 필드 또는 쿠키에 저장하십시오. (향후 NodeJs 서버에 대한 요청)
서버가 John에게 메시지를 보내려고 할 때 :
사전에서 john의 UserID를 찾아 해당 연결로 메시지를 보냅니다.
여기 (메시지 메커니즘에)에 등록 된 asp.net 서버 코드가 없습니다. NodeJ 만. *
질문:
이것이 올바른 방법입니까?