SignalR 集线器简单实例2
来源:互联网 发布:js 对象未定义 编辑:程序博客网 时间:2024/06/05 08:55
1.路由配置
//注册集线器路由 app.MapSignalR("/realtime", new HubConfiguration() { });
2.服务端处理
/// <summary> /// 集线器定义 /// </summary> public class EchoHub : Hub { private static int _count = 0; /// <summary> /// 连接创建成功 /// </summary> /// <returns></returns> public override async Task OnConnected() { Interlocked.Increment(ref _count); //通知其他连接 await Clients.Others.Message("新连接创建:" + Context.ConnectionId + ",已连接数量:" + _count); //通知当前连接 await Clients.Caller.Message("Hey,welcome!"); } /// <summary> /// 连接断开 /// </summary> /// <param name="stopCalled"></param> /// <returns></returns> public override Task OnDisconnected(bool stopCalled) { Interlocked.Decrement(ref _count); //通知所有连接 return Clients.All.Message(Context.ConnectionId + " 连接关闭,剩余连接数:" + _count); } /// <summary> /// 广播消息 /// </summary> public Task Broadcast(string message) { //通知所有连接 return Clients.All.Message(Context.ConnectionId + "> " + message); } /// <summary> /// 获取当前在线用户的连接ID /// </summary> /// <returns></returns> public string GetCurrentID() { return Context.ConnectionId; } /// <summary> /// 获取当前请求的cookie列表 /// </summary> /// <returns></returns> public object GetCurrentCookie() { return Context.RequestCookies.ToArray(); } /// <summary> /// 获取所有在的连接 /// </summary> /// <returns></returns> public object GetAllID() { // GlobalHost.ConnectionManager.GetHubContext<>(); return Clients.All; } }
3.客户端处理
<h1>Echo hub</h1> <div> <input type="text" id="text" /> <button id="send">Send</button> <button id="GetCurrentID">获取当前在线用户的ID</button> <button id="GetAllID">获取所有在线用户的ID</button> <button id="GetCookies">获取当前请求的cookie</button> </div> @*与服务器端集线器 建立连接*@ <script src="/realtime/js"></script> <script type="text/javascript"> $(function () { //服务器端对应的集线器 var hub = $.connection.echoHub; $.connection.loggint = true; $.connection.url = '/realtime'; //客户端接收消息 hub.client.message = function (text) { $("body").append(text + "<br />"); } //启动连接成功 $.connection.hub.start().done(function () { //广播消息 $('#send').click(function () { var text = $('#text').val(); //调用服务器端,广播消息 hub.server.broadcast(text) }); //获取在线用户的ID $('#GetCurrentID').click(function () { var deferred = hub.server.getCurrentID(); deferred.done(function (data) { console.info(data); alert(data); }); }); //获取所有用户在线ID,失败 $('#GetAllID').click(function () { var deferred = hub.server.getAllID(); deferred.done(function (data) { alert(data); console.info(data); }); deferred.fail(function (err) { console.info(err) alert(err.message); }); }); //获取当前请求的cookie $('#GetCookies').click(function () { var deferred = hub.server.getCurrentCookie(); deferred.done(function (data) { console.info(data); console.info(JSON.stringify(data)); alert(data); }).fail(function (err) { console.info(err); alert(err.message); }); }); }); }); </script>
获取当前连接的ID
获取当前连接上下文中的cookie
获取所有在线连接的ID失败
0 0
- SignalR 集线器简单实例2
- SignalR 集线器简单实例1
- SignalR 2简单聊天室
- C# Signalr集线器入门知识
- .net signalR 实例
- signalR 实现简单聊天
- Signalr简单示例
- SignalR + MVC5 简单示例
- SignalR 2.x入门(一):SignalR简单例子
- SignalR
- SignalR
- signalr
- 2.3.2 集线器
- 集线器
- 集线器
- 集线器
- 集线器
- 获取Hub集线器实例的方式
- RESTful API 设计指南
- HTTP Headers
- ORA-02046: 分布式事务处理已经开始解决方案
- 3.毕向东_贴图
- 生成.dll时,如果只有.dll,没有.lib,如何解决?(生成.DLL提供方用的是dllexport,使用方用的是dllimport,用个宏来代替)
- SignalR 集线器简单实例2
- csdn
- Android创建和使用数据库
- 【Codeforces Round 269 (Div 2)D】【KMP】我们的积木和目标积木的等增幅的匹配位点数
- 开始我的编程日志
- 给相同的类对象赋值
- xcode/osx官方直接下载地址(离线下载)
- 单线程你别阻塞,Redis时延问题分析及应对
- 经典SQL语句大全