公司的新项目要有一个推送的功能,我第一时间就想到了signalr,但是苦于自己水平有限,加上之前也没用过signalr,只能硬着头皮去网上找资料一步一步在项目里面应用signalr,我们的推送项目是一个以asp.net web api为主体的项目,具体的需求是第三方程序调用webapi项目暴露的方法的时候通知前端数据有更新,前端重新发送ajax请求从第三方程序获取数据(听起来有点low...)。
一开始我是用的Hub类,前端设置一个Hub类的代理,当webapi方法被调用的时候就发通知给前端,前端重新获取数据。这种方式看似是可行的,但是有些不稳定,就是当代理增加的时候,有时候signalr的相关的一些请求一直挂起,就是说无法无服务器建立长链接,万般无奈之下我就只能放弃,后来我开始尝试另一种方式,就是Persistent,这种方式的使用基本上与hub差别不大,测试的时候反映也良好,目前的方案就是webapi广播给所有的客户端,广播的信息里面包含了UserId,然后前端比对自己的UserId与广播的UserId是否一致,一致就重新去服务端获取数据。(虽然有点low,目前不知道如何精准推送,前端每次刷新,connectionId都变了)
以上就是signalr初体验的随笔和遇到的一些问题,欢迎各位指正.