MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Nodejs - modul websocket-node:Bagaimana cara membuat server soket multi-klien berfungsi?

Anda tidak menyimpan koneksi di sisi server. Anda hanya mengaturnya di server untuk berkomunikasi langsung bolak-balik ke server. Jika Anda ingin pesan yang masuk ke server dikirim kembali ke semua orang, Anda perlu menyiapkan .on('message', ...) fungsi untuk setiap koneksi di server untuk memiliki perilaku itu. Untuk melakukan ini, Anda harus menyimpan koneksi saat dibuat. Coba ini:

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. luwak:hanya mengembalikan kunci dari dokumen

  2. Apa perbedaan antara Spring Data MongoDB dan Hibernate OGM untuk MongoDB?

  3. Bagaimana cara menggunakan Elasticsearch dengan MongoDB?

  4. Menghubungkan ke MongoDB Atlas dari fungsi firebase

  5. Mengubah beberapa bidang di Mongo dari String ke Array