我的ASP.NET服务器上有一个SignalR Hub,我的JavaScript页面中有一个监听signalR客户端。
当我将消息从服务器中心推送到我的客户端时,代码是否等待所有字节都已发送,然后继续进行,或者是否在内部将其发送到单独的线程中?
例如,请考虑此服务器代码(c#)。
foreach (string hubUserId in hubUserIds)
{
context.Clients.Client(hubUserId).broadcastMessage('this could be a large byte array');
}
我目前没有遇到任何延迟发送消息的情况,而且通过观察它似乎还没有等到数据被推出。但我可能是错的。
如果它没有产生一个线程,我可以自己安全吗?
答案 0 :(得分:2)
在客户端上调用方法会返回一个等待的任务。
在您的示例中,您没有等待它 - 因此调用将是异步的,并且将在后台进行。
概述的官方文件位于:
http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-server#asyncclient
您可以在ASP.Net中阅读有关async / await的更多信息:
http://www.asp.net/mvc/overview/performance/using-asynchronous-methods-in-aspnet-mvc-4