2016-12-09 6 views
0

ソケット(Windowsアプリケーション)を使用してソケット(System.Net.Sockets)を介してクライアントにメッセージを送信するWindowsサーバーアプリケーションがあります。そして今、Asp.net SignalRを使用してサーバーからWebアプリケーションにメッセージを送信します。.netソケットからsignalR hubへのメッセージの送受信

これをSignalRでどうすれば達成できますか?コードスニペットとアーキテクチャを提案してください。

答えて

0

現時点ではできません。現在のバージョンのSignalRはHTTPに依存し、this protocolに従います。このプロトコルに従わないと、サーバーに接続できなくなります。

0

を使用して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からこのスクリプトを得ました)

関連する問題