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

  • chrmoe

    chrmoe

    7 Kasım 2006
  • Creavite

    Creavite

    8 Mart 2009
  • William Hyde

    William Hyde

    23 HAZİRAN 2008