खोज…


मूल बातें

एक बार कनेक्ट होने के बाद आप ISubscriber.Publish विधि को कॉल करके संदेश प्रकाशित कर सकते हैं:

// grab an instance of an ISubscriber
var subscriber = connection.GetSubscriber();

// publish a message to the 'chat' channel
subscriber.Publish("chat", "This is a message")

उपभोक्ता ISubscriber.Subscribe विधि का उपयोग करके चैनल की सदस्यता ले सकते हैं। प्रकाशक द्वारा भेजे गए संदेशों को इस विधि से पारित हैंडलर द्वारा नियंत्रित किया जाएगा।

// grab an instance of an ISubscriber
var subscriber = connection.GetSubscriber();

// subscribe to a messages over the 'chat' channel
subscriber.Subscribe("chat", (channel, message) => {
    // do something with the message
    Console.WriteLine((string)message);
});

जटिल डेटा (JSON)

आप इसे प्रकाशित करने से पहले पेलोड को क्रमबद्ध करके अधिक जटिल संदेश प्रसारित कर सकते हैं:

// definition of a message
public class ChatMessage
{
    public Guid Id { get; set; }
    public string User { get; set; }
    public string Text { get; set; }
}

// grab an instance of an ISubscriber
var subscriber = connection.GetSubscriber();

var message = new ChatMessage
{
    Id = Guid.NewGuid(), 
    User = "User 1234", 
    Text = "Hello World!"
};

// serialize a ChatMessage
// this uses JIL to serialize to JSON
var json = JSON.Serialize(message);

// publish the message to the 'chat' channel
subscriber.Publish("chat", json)

सब्सक्राइबर को फिर मैसेज को डिसेर्बलाइज करना होगा:

// grab an instance of an ISubscriber
var subscriber = connection.GetSubscriber();

// subscribe to messages over the 'chat' channel
subscriber.Subscribe("chat", (channel, json) => {
    var message = JSON.Deserialize<ChatMessage>(json);

    // do something with the message
    Console.WriteLine($"{message.User} said {message.Text}");
});

जटिल डेटा (प्रोटोबॉफ़)

StackExchange.Redis भी पब / उप चैनल पर बाइट्स भेजने का समर्थन करता है, यहाँ हम अपने संदेश को बाइट सरणी में भेजने के लिए प्रोटोबुफ़-नेट का उपयोग करते हैं:

// definition of a message (marked up with Protobuf attributes)
[ProtoContract]
public class ChatMessage
{
    [ProtoMember(1)]
    public Guid Id { get; set; }
    [ProtoMember(2)]
    public string User { get; set; }
    [ProtoMember(3)]
    public string Text { get; set; }
}

// grab an instance of an ISubscriber
var subscriber = connection.GetSubscriber();

var message = new ChatMessage
{
    Id = Guid.NewGuid(), 
    User = "User 1234", 
    Text = "Hello World!"
};

using (var memoryStream = new MemoryStream())
{
    // serialize a ChatMessage using protobuf-net
    Serializer.Serialize(memoryStream, message);

    // publish the message to the 'chat' channel
    subscriber.Publish("chat", memoryStream.ToArray());
}

फिर से ग्राहक को रसीद पर संदेश भेजने की आवश्यकता होती है:

// grab an instance of an ISubscriber
var subscriber = connection.GetSubscriber();

// subscribe to messages over the 'chat' channel
subscriber.Subscribe("chat", (channel, bytes) => {
    using (var memoryStream = new MemoryStream(bytes))
    {
        var message = Serializer.Deserialize<ChatMessage>(memoryStream);

        // do something with the message
        Console.WriteLine($"{message.User} said {message.Text}");
    }
});


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow