2016-12-09 5 views
0

У нас есть приложение-сервер Windows, отправляющее сообщение через сокет (System.Net.Sockets) клиентам с сокетами (приложениями Windows). И теперь мы хотим отправить сообщение с сервера на веб-приложение с помощью Asp.net SignalR.Отправить/Получить сообщение от .net socket to signalR hub

Как мы можем достичь этого с помощью SignalR? Пожалуйста, предложите с фрагментом кода и архитектурой.

ответ

0

На данный момент вы не можете. Текущая версия SignalR зависит от HTTP и следует за this protocol. Вы не сможете подключиться к серверу, если не выполняете протокол.

0

Вы можете сделать это с помощью SignalR, используя Hub. Fist, установите SignalR из диспетчера пакетов NuGet.

В файле Startup.cs добавьте

app.MapSignalR(); 

Создать свой класс Hub:

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 странице. (Вы получили этот сценарий из SignalR)

<script src="~/Scripts/jquery.signalR-2.0.3.min.js"></script> 

Надежда это поможет ...

Смежные вопросы