3
在.NET 4.5中引入了一個新的WCF綁定 - NetHttpBinding,它使用WebSocket協議作爲底層傳輸。這意味着這可以實現從服務器的真正推送。現在,我已經能夠使用像這樣的回調合同做出某種推:如何使用WCF NetHttpBinding(WebSockets)將一個客戶端發送的消息廣播(推送)到所有客戶端?
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)]
public class WebSocketSampleService : IDuplexContract
{
public string SayHelloDuplex()
{
//push to the current caller
OperationContext.Current.
GetCallbackChannel<IDuplexCallbackContract>().
SayingHello("Hello from WebSockets");
//answer the current caller in the regular http way
return "Hello";
}
}
[ServiceContract(CallbackContract=typeof(IDuplexCallbackContract))]
public interface IDuplexContract
{
[OperationContract]
string SayHelloDuplex(string name);
}
[ServiceContract]
public interface IDuplexCallbackContract
{
[OperationContract]
void SayingHello(string message);
}
我想這樣做雖然,是指一個客戶端調用該方法,以廣播消息到所有客戶端SayHelloDuplex()
。有沒有辦法訪問所有客戶端的回調通道?或者我應該記錄所有客戶的回撥通道,以便以後使用其他方法(例如Connect()
)?也許我正在以錯誤的方式解決這個問題?
任何幫助將不勝感激。謝謝
不是您的具體問題的答案,但這聽起來像是SignalR可以讓您的生活更輕鬆的場景。里程將有所不同... –
@ JeffBrand-MSFT謝謝。我正在學院完成我的主要學期項目。我分析了在.NET中實現實時通信的方法。我已經寫了關於SignalR以及它如何讓我的生活更輕鬆。這也是我想分析的一個選擇。 – reederz