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
原创粉丝点击