【问题标题】:SignalR Self Hosting With WCF Service and Clients Would be Desktop UsersSignalR 自托管与 WCF 服务和客户端将是桌面用户
【发布时间】:2013-12-22 19:14:14
【问题描述】:
我的场景是我需要一个 SignalR 自托管 WCF 服务,该服务响应并向来自 Winform 或 WPF 的所有连接用户发送消息。
我已经尝试了很多如下:
- 我已经使用如下 SignalR 自托管代码创建了 WCF 服务,其中包含 3 个类和 1 个接口。
命名空间 SignalRServiceClass
{
[服务合同]
公共接口 ISignalRServiceClass
{
[运营合同]
字符串 GetsMessage(字符串名称);
[运营合同]
无效配置(IAppBuilder 应用程序);
[运营合同]
无效发送(字符串名称,字符串消息);
}
}
命名空间 SignalRServiceClass
{
公共类 SignalRServiceClass : ISignalRServiceClass
{
公共字符串 GetsMessage(字符串名称)
{
返回“来自服务的消息”+名称+“!”;
}
}
}
命名空间 SignalRServiceClass
{
类 ClassHub : 集线器
{
公共无效发送(字符串名称,字符串消息)
{
Clients.All.addMessage(name, message);
}
}
}
命名空间 SignalRServiceClass
{
类启动
{
公共无效配置(IAppBuilder 应用程序)
{
// app.UseCors(CorsOptions.AllowAll);
// app.MapSignalR();
app.Map("/signalr", 地图 =>
{
map.UseCors(CorsOptions.AllowAll);
var hubConfiguration= 新的 HubConfiguration
{
EnableDetailedErrors=true,
EnableJSONP=真
};
map.RunSignalR(hubConfiguration);
});
}
}
}
其次是 Winform 客户端。我在这里很困惑如何在这里管理客户端代码,但我放了一些代码进行测试,如下所示。
私人无效按钮1_Click(对象发送者,EventArgs e)
{
//MessageBox.Show(test.GetsMessage("这是测试消息"));
var hubConnection = new HubConnection("http://localhost:50172/");
var serverHub = hubConnection.CreateHubProxy("MessageRecievingHub");
serverHub.On("broadCastToClients", message => MessageBox.Show(message));
hubConnection.Start().Wait();
}
请以这种方式指导我。
您的帮助将不胜感激。我已经尝试并搜索了很多但徒劳无功。
非常感谢。
【问题讨论】:
标签:
wcf
signalr