SORU
10 Ocak 2011, PAZARTESİ


Socket ile belirli bir istemci için mesaj gönderin.ıo ve node.js

Soket ile çalışıyorum.ıo ve node.js ve şimdiye kadar oldukça iyi görünüyor, ama belirli bir istemci sunucudan bir mesaj göndermek için nasıl bilmiyorum, şöyle bir şey:

client.send(message, receiverSessionId)

Ama .send() ya .broadcast() yöntemleri de benim ihtiyacım kaynağı gibi görünüyor.

Ne buldum gibi olası bir çözüm, .broadcast() yöntem kabul eder gibi bir ikinci parametre bir dizi Sessionİds için hangi mesajı gönderdi, ben de pass, bir dizi ile tüm Sessionİds bağlı o anda sunucuya, başka bir dilek mesajı gönderdi, ama hissediyorum olmalı daha iyi bir çözüm.

Herhangi bir fikir?

CEVAP
22 Mart 2012, PERŞEMBE


Ivo Wetzel cevabı Yuva içinde geçerli gibi görünmüyor.ıo 0.9 artık.

Kısacası şimdi socket.id Kaydet ve io.sockets.socket(savedSocketId).emit(...) mesaj göndermek için kullanmanız gerekir.

Bu kümelenmiş node.js server çalışıyor bu nasıl olur:

İlk mesajlar çapraz işlemler gitsin Redis mağaza mağaza olarak ayarlamanız gerekir:

var express = require("express");
var redis = require("redis");
var sio = require("socket.io");

var client = redis.createClient()
var app = express.createServer();
var io = sio.listen(app);

io.set("store", new sio.RedisStore);


// In this example we have one master client socket 
// that receives messages from others.

io.sockets.on('connection', function(socket) {

  // Promote this socket as master
  socket.on("I'm the master", function() {

    // Save the socket id to Redis so that all processes can access it.
    client.set("mastersocket", socket.id, function(err) {
      if (err) throw err;
      console.log("Master socket is now"   socket.id);
    });
  });

  socket.on("message to master", function(msg) {

    // Fetch the socket id from Redis
    client.get("mastersocket", function(err, socketId) {
      if (err) throw err;
      io.sockets.socket(socketId).emit(msg);
    });
  });

});

Bu daha karmaşık hale getirir çünkü kümeleme kodu burada atlanmış, ama önemsiz ekleyin. Sadece çalışan kod için her şeyi ekleyin. Doktor burada http://nodejs.org/api/cluster.html

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • A Alkhaldi

    A Alkhaldi

    12 Mayıs 2007
  • Ludique

    Ludique

    21 NİSAN 2009
  • stewmurray47

    stewmurray47

    1 Kasım 2006