我是信号员的新手。我在没有自动生成代理的客户端中创建了hubproxy。如何从我的javascript代理向服务器发送消息?
完成: -
Signalr成功从服务器中心类接收即时消息。
TODO: -
我需要通过客户端中的hubproxy将ConnectionId从客户端发送到服务器中心类,并根据服务中的hubId通过connectionId响应请求的客户端
我不知道如何使用hubproxy将数据从客户端发送到服务器?
Javascript客户端: -
_signalr:function(){
var connection = $.hubConnection();
var proxy=this;
var service = $.connection.serviceHub;
var ServiceHubProxy = connection.createHubProxy('serviceHub');
ServiceHubProxy.on('addMessage', function signalr(widgetName,info) {
if (widgetName == "Layout")
proxy._renderDashboardLayout(null, info);
else
proxy._renderControl(null,widgetName, info);
});
connection.url = 'http://localhost:58087/signalr';
connection.start({ jsonp: true }).done(function () {
var Id = connection.id;
console.log(Id);
console.log("Connected");
proxy.loadLayout();
});
},
HubClass: -
[HubName("serviceHub")]
public class ServiceHub : Hub
{
public void Send(string widgetName,object info)
{
var service = GlobalHost.ConnectionManager.GetHubContext<ServiceHub>();
service.Clients.All.addMessage(widgetName,info);
}
}
Owin Startup Class: -
public class Startup
{
public void Configuration(IAppBuilder app)
{
var configuration = new HubConfiguration();
configuration.EnableJSONP = true;
app.MapSignalR(configuration);
}
}
任何人都可以提供解决方案吗?
会更有帮助。
答案 0 :(得分:0)
您需要在后端创建一个功能以接收来自客户端的呼叫。
[HubName("serviceHub")]
public class ServiceHub : Hub
{
//send to client
public void Send(string widgetName,object info)
{
var service = GlobalHost.ConnectionManager.GetHubContext<ServiceHub>();
service.Clients.All.addMessage(widgetName,info);
}
//receive from client
public void ReceiveAnAjaxFromClient(string data)
{
//do something
}
}
在客户端,您将发送ReceiveAnAjaxFromClient的ajax