关于signalR推送的使用.....

黑子大哥 2017-08-15 11:52:52
在使用signalR推送的时候遇到一个问题,我使用的是PersistentConnection长连接
处次使用,还有很多不懂。。。

现在遇到一个问题,实在不太明白为什么,因为我这边是这样的,当 OnReceived 收到消息之后,服务端需要等待长时间处理返回消息,为此在这里收到消息,我先返回一条信息提示处理中,等待信息处理完毕之后,我利用委托返回回来


//收到消息处理
msg = "正在为你查询该宝贝信息,请稍后...";
SendClient(cToken.ID, msg)

回调
ItemsServerTools.Instance.CollectBack = (iid, exist) =>
{
Items model = GetItem(iid);
lock (obj)
{
if (CACHE.ContainsKey(iid))
{
foreach (var id in CACHE[iid])
{
var msg = ShareItemTpl.CreatedPhone(model, API_CODE);
msg = System.Web.HttpUtility.HtmlEncode(msg);
SendClient(id, msg);
}
CACHE.Remove(iid);
}
}
};
//发送客户端
private void SendClient(string clientID, string content)
{
var conn = userManager.GetConnectID(clientID);

var result = new MPlusResult();
result.Form = this.User;
result.Type = 1;
result.Message = content;

try
{
//这个地方 Connection 对象有时候是空的 有时候不是空的
Connection.Send(conn, result);
msg.IsRead = true;
}
catch(Exception ex)
{
msg.IsRead = false;
}
}


这里遇到问题了,是 Connection 这个对象有时候是空的 有时候又不是空的?不太懂?求科普
...全文
325 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
黑子大哥 2017-08-29
  • 打赏
  • 举报
回复
原因就是生命周期的问题,解决方案,每次发送存储客户端的用户名,再次回复的时候找到用户对于的链接ID进行发送即可
黑子大哥 2017-08-15
  • 打赏
  • 举报
回复
难道是生命周期的问题?
  • 打赏
  • 举报
回复
如果你使用 asp.net 网站,那么你就支持 http 短链接数据服务,即可。
  • 打赏
  • 举报
回复
开发一个专业一点的企业服务器,应该使用 windows service 方式,不要使用一般的网站方式。
黑子大哥 2017-08-15
  • 打赏
  • 举报
回复
来个人 结帖
ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程。实时 Web 功能是指这样一种功能:当所连接的客户端变得可用时服务器代码可以立即向其推送内容,而不是让服务器等待客户端请求新的数据。       SignalR类似与JavaScript实时框架,如Socket.IO。SignalR能够完成客户端向服务器的异步通信,并同时支持服务器向浏览器客户端推送事件。SignalR的连接通过日益流行的WebSockets API完成,而如果WebSockets无法使用,它会透明地回落为长轮询技术(long-polling technique)。如果开发人员想使用Signal,需要在客户端层使用像jQuery的JavaScript框架,并在服务端层使用.NET代码编写应用和服务。SignalR具有多种编程模型(PersistentConnections 和Hubs),它为开发人员提供了连接、消息接收群以及事件处理器的不同层次的访问。            SignalR显示已经可在单台机器上扩展至上万个连接,同时可以通过service bus和redis 以及sql server 实现可扩展的集群部署,具体参看Microsoft ASP.NET SignalRSignalR 包括一些针对不同功能的类库,下载安装可以看到一下几个主要项目:Microsoft.AspNet.SignalR – meta package (use this)Microsoft.AspNet.SignalR.Client – .NET 4 and WinRT clientMicrosoft.AspNet.SignalR.JS – The Javascript client.Microsoft.AspNet.SignalR.Core – Core server package with no host implementationMicrosoft.AspNet.SignalR.Hosting.AspNet – The ASP.NET hostMicrosoft.AspNet.SignalR.Hosting.Utils – utilities for signalr (signalr.exe)Microsoft.AspNet.SignalR.Redis – Redis message bus implementationMicrosoft.AspNet.SignalR.ServiceBus – Service bus message bus implementationGItHUb上的地址:https://github.com/SignalR/SignalR示例效果:安装也很简单,另外一种方式可以通过控制台安装:To install Microsoft ASP.NET SignalR, run the following command in the Package Manager ConsolePM> Install-Package Microsoft.AspNet.SignalR     ASP.NET SignalR 目前还在持续不断更新完善中,这个框架目前还没正式集成到.NET框架里。不过作为Web开发,实时同时,客户端和服务端双工通信这也是非常重要的需求。无论是传统Web网站还是移动平台,这个框架应该都会对我们的开发工作带来很大便利。SignalR Hub AuthorizationSecuring SignalR to your site’s usersScaling SignalR with RedisRunning SignalR on MonoUsing SignalR in MonoTouch and Mono for Android Apps SignalR really changes everythingReal Time Commenting using SignalR and XSLT基于SignalR的超线程上载器Asp.Net SignalR Chat Room(原创)利用SignalR实现IOS即时通讯(A篇服务端)使用SignalR实时显示淘宝买家信誉及中差评信息[Xamarin] iOS 與Android結合SignalRSignalR -- server push 利器http://www.codeproject.com/Articles/584845/SignalR-as-a-Service Pushing ETW events through SignalRComet:基于 HTTP 长连接的“服务器推”技术解析ASP.NET Signa

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧