
用SignalR做了个在线聊天应用,由于多台服务器之间消息推送和通知不能共享。
也就是说用户在A地区的服务器发送一条消息,另一用户在B地区的服务器不能收到消息。
现在就只一台服务器部署,程序运行一段时间后,在线人数上2k,系统运行速度就下降了。
现在怎么解决这个问题,求方案,
另外SignalR需要注意哪些性能问题,由于做这个项目时对SignalR不是很熟,也是边学边卖。
有,/// <summary>/// 用户与服务器断开链接
/// </summary>
/// <param name="stopCalled"></param>
/// <returns></returns>
public override Task OnDisconnected(bool stopCalled)
这方法就是判断用户断开连接的时候 执行的
您好,SignalR常常依托于ASP.NET应用程序运行于IIS中,但它还可以自我托管(比如作为console winform、Windowsservice).只要我们使用self-host库就可以了.
该库向所有的SignalR 2库一样,构建于OWIN (Open Web Interface for
.NET).OWIN定义了一个在.NET web 服务端和web 应用程序的抽象.
OWIN解耦了从服务端来的web 应用程序,这使得OWIN对于子托管web应用程序于自己的进程中得以表现得很完美。
不托管于IIS的原因有:
IIS的环境不能构建,比如一个已经存在的服务端程序(没有运行于IIS),
IIS的性能开销需要注意的地方,
signalr功能需要添加到一个现有的应用程序,比如运行在 Windows Service, Azure worker role, 或者 其他进程。
如果我们处于性能原因考虑使用self-host,我们推荐将程序同时在IIS中运行测试,来看看性能的具体好处。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)