sql >> データベース >  >> NoSQL >> MongoDB

Nodejs-websocket-nodeモジュール:マルチクライアントソケットサーバーを機能させる方法は?

    サーバー側に接続を保存していません。サーバーと直接通信するようにサーバー上でそれらを設定しているだけです。サーバーに送信されるメッセージを全員に送り返す場合は、.on('message', ...)を設定する必要があります。 サーバー上の各接続がその動作をするように機能します。これを行うには、接続が作成されたときに接続を保存する必要があります。これを試してください:

    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. Mongoid:複数のデータベースを使用していますか?

    2. MongoDB:WriteResult.getN()は常に0を返しますか?

    3. 最後の配列エントリフィールド値で結果をフィルタリングする

    4. MongoDBをサービスとして起動できません