MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Nodejs - websocket-node module:Làm thế nào để làm cho nhiều máy chủ socket-hoạt động?

Bạn không lưu trữ các kết nối ở phía máy chủ. Bạn chỉ cần thiết lập chúng trên máy chủ để giao tiếp trực tiếp qua lại với máy chủ. Nếu bạn muốn các thư từ máy chủ được gửi lại cho mọi người, bạn cần thiết lập .on('message', ...) chức năng cho mỗi kết nối trên máy chủ để có hành vi đó. Để làm điều này, bạn cần lưu trữ các kết nối khi chúng được tạo. Hãy thử điều này:

var WebSocketServer = require('websocket').server;
var http = require('http');

var server = http.createServer(function(request, response) {
    console.log((new Date()) + ' Received request for ' + request.url);
    response.writeHead(404);
    response.end();
});
server.listen(5050, function() {
    console.log((new Date()) + ' Server is listening on port 5050');
});

wsServer = new WebSocketServer({
    httpServer: server,
    // You should not use autoAcceptConnections for production 
    // applications, as it defeats all standard cross-origin protection 
    // facilities built into the protocol and the browser.  You should 
    // *always* verify the connection's origin and decide whether or not 
    // to accept it. 
    autoAcceptConnections: false
});

function originIsAllowed(origin) {
  // put logic here to detect whether the specified origin is allowed. 
  return true;
}

//create an array to hold your connections
var connections = [];

wsServer.on('request', function(request) {
    if (!originIsAllowed(request.origin)) {
      // Make sure we only accept requests from an allowed origin 
      request.reject();
      console.log((new Date()) + ' Connection from origin ' + request.origin + ' rejected.');
      return;
    }
    var connection = request.accept('echo-protocol', request.origin);

    //store the new connection in your array of connections
    connections.push(connection);
    
    console.log((new Date()) + ' Connection accepted.');
    connection.on('message', function(message) {
        if (message.type === 'utf8') {
            console.log('Received Message: ' + message.utf8Data);

            //send the received message to all of the 
            //connections in the connection array
            for(var i = 0; i < connections.length; i++) {
                connections[i].sendUTF(message.utf8Data);
            }
        }
        else if (message.type === 'binary') {
            console.log('Received Binary Message of ' + message.binaryData.length + ' bytes');
            connection.sendBytes(message.binaryData);
        }
    });
    connection.on('close', function(reasonCode, description) {
        console.log((new Date()) + ' Peer ' + connection.remoteAddress + ' disconnected.');
    });
});



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Truy vấn giá trị null trong MongoDB

  2. Làm thế nào để thực hiện hiệu quả việc phân biệt với nhiều khóa?

  3. Cách tốt nhất để lưu trữ ngày sinh trong MongoDB là gì?

  4. MongoDB tìm tài liệu con và sắp xếp kết quả

  5. Trình xử lý nhập dữ liệu solr cho MongoDB