ソケット(Windowsアプリケーション)を使用してソケット(System.Net.Sockets)を介してクライアントにメッセージを送信するWindowsサーバーアプリケーションがあります。そして今、Asp.net SignalRを使用してサーバーからWebアプリケーションにメッセージを送信します。.netソケットからsignalR hubへのメッセージの送受信
これをSignalRでどうすれば達成できますか?コードスニペットとアーキテクチャを提案してください。
ソケット(Windowsアプリケーション)を使用してソケット(System.Net.Sockets)を介してクライアントにメッセージを送信するWindowsサーバーアプリケーションがあります。そして今、Asp.net SignalRを使用してサーバーからWebアプリケーションにメッセージを送信します。.netソケットからsignalR hubへのメッセージの送受信
これをSignalRでどうすれば達成できますか?コードスニペットとアーキテクチャを提案してください。
現時点ではできません。現在のバージョンのSignalRはHTTPに依存し、this protocolに従います。このプロトコルに従わないと、サーバーに接続できなくなります。
を使用してSignalRで行うことができます。 NuGet Package ManagerからSignalRをインストールしてください。あなたのStartup.csファイルで
、あなたのハブクラスを作成します
app.MapSignalR();
を追加します。
public class MyHub : Hub
{
public string msg = "Initializing hub...";
public void CallLongOperation(int progressStatus)
{
Newtonsoft.Json.Linq.JObject jsonMessage = Newtonsoft.Json.Linq.JObject.Parse(@"{
'msg': 'message',
'value': "someValue"}");
Clients.Caller.sendMessage(jsonMessage.ToString());
}
}
次に、あなたのコントローラでは、MyHub
インスタンスを取得し、クライアントに通知することができます
var hubContext = GlobalHost.ConnectionManager.GetHubContext<ProgressHub>();
hubContext.Clients.All.sendMessage(jsonMessage.ToString());
Jsonオブジェクトを作成する必要があることに注意してください(これはMyHub
クラス)
最後に、あなたのJavaScriptファイル内のメッセージを受け入れる:
var progressNotifier = $.connection.progressHub;
progressNotifier.client.sendMessage = function (message) {
// Do whatever you want with message you sent from server
}
};
あなたのhtml
ページにスクリプトを追加する必要があります。 ...
<script src="~/Scripts/jquery.signalR-2.0.3.min.js"></script>
希望(あなたはSignalRからこのスクリプトを得ました)