Signalr通常通过集线器和连接在“服务器”端asp.net中使用。我想要完成的(如果可能的话)是使用signalr作为网站中的“客户”。 我有2个网站,一个作为服务器,另一个作为客户。
我试过这个
public void Start()
{
new Task(this.Listen).Start();
//new Thread(this.Listen).Start();
}
private async void Listen()
{
try
{
using (var hubConnection = new HubConnection("http://localhost:8081"))
{
var myHub = hubConnection.CreateHubProxy("mediaHub");
hubConnection.StateChanged += change => System.Diagnostics.Debug.WriteLine(change.OldState + " => " + change.NewState);
myHub.On<string>(
"log",
message =>
System.Diagnostics.Debug.WriteLine(message + " Notified !"));
await hubConnection.Start();
}
}
catch (Exception exc)
{
// ...
}
}
服务器正在调用客户端:
var hub = GlobalHost.ConnectionManager.GetHubContext<MediaHub>() ;
hub.Clients.All.log("Server: " + message);
什么都没有到达客户端!
答案 0 :(得分:2)
一旦您的连接准备就绪,您实际上将其丢弃,因此它不会留在身边。作为快速测试,请删除using
内容并让您的hubConnection
成为您班级的静态成员,并检查您是否被调用。如果你这样做,那么你可以从那里改进它,但至少你有更清楚的事情。