搜索
简帛阁>技术文章>使用SignalR实现消息提醒

使用SignalR实现消息提醒

Asp.net SignalR是微软为实现实时通信的一个类库。一般情况下,SignalR会使用JavaScript的长轮询(long polling)的方式来实现客户端和服务器通信,随着Html5中WebSockets出现,SignalR也支持WebSockets通信。另外SignalR开发的程序不仅仅限制于宿主在IIS中,也可以宿主在任何应用程序,包括控制台,客户端程序和Windows服务等,另外还支持Mono,这意味着它可以实现跨平台部署在Linux环境下。

SignalR内部有两类对象:

  1. Http持久连接(Persisten Connection)对象:用来解决长时间连接的功能。还可以由客户端主动向服务器要求数据,而服务器端不需要实现太多细节,只需要处理PersistentConnection 内所提供的五个事件:OnConnected, OnReconnected, OnReceived, OnError 和 OnDisconnect 即可。
  2. Hub(集线器)对象:用来解决实时(realtime)信息交换的功能,服务端可以利用URL来注册一个或多个Hub,只要连接到这个Hub,就能与所有的客户端共享发送到服务器上的信息,同时服务端可以调用客户端的脚本。

SignalR将整个信息的交换封装起来,客户端和服务器都是使用JSON来沟通的,在服务端声明的所有Hub信息,都会生成JavaScript输出到客户端,.NET则依赖Proxy来生成代理对象,而Proxy的内部则是将JSON转换成对象。

消息提醒也就是当客户有新消息来时,在客户端的右下角进行弹框提醒。要实现这个功能的思路是:

  1. SignalR服务端推送消息到客户端的实现方式为调用客户端的receiveMessage方法来将消息附加到聊天记录内,所以我们可以在客户端的receiveMessage方法中实现弹框的逻辑。
  2. 找好了方法定义的位置后,自然是去找一个比较好的弹框效果JS类库了,这里使用的是iNotify库来实现的。该库的github地址为:https://github.com/jaywcjlove/iNotify,在线测试地址为:http://jslite.io/iNotify/
  3. 你看QQ或者微信的消息提醒,消息提醒一般是在你不在聊天的当前Tab页面才会弹出,我们可以利用Html5 visibilitychange事件来实现,不过我这里是通过失焦点的方式,也就是focus事件。
JavaScript
 
// 接收消息 
        systemHub.client.receivePrivateMessage = function(fromUserId, userName, message) { 
       // 专题二中的代码 
       
      // 消息提醒的代码 
    if (active == false) { 
                var iN = new iNotify({ 
                    effect: 'flash', 
                    interval: 500, 
                    audio: { 
                        file: ['/Music/msg.mp3'] 
                    }, 
                    notification: { 
                        title: "通知!", 
                        body: '您有一条新消息' 
                    } 
                }); 
 
                iN.setTitle(true).player(); 
                iN.setFavicon(true).setTitle(true).notify(); 
            } 
        }; 
}    

 

转载于:https://www.cnblogs.com/starksoft/p/5625323.html

AspnetSignalR是微软为实现实时通信的一个类库。一般情况下,SignalR使用JavaScript的长轮询(longpolling)的方式来实现客户端和服务器通信,随着Html5中Web
https://blogcsdnnet/coderk2014/article/details/88888787https://docsmicrosoftcom/zhcn/aspnet/core/tut
1)、SignalR简介ASPNETCoreSignalR是为ASPNET开发人员提供的一个库,可以简化开发人员将实时Web功能添加到应用程序的过程。实时Web功能是指这样一种功能:当所连接的客户端
在上一篇SignalR文章中,演示了如何通过SignalR实现了简单的聊天室功能;本着简洁就是美的原则,这一篇我们也来聊聊在SignalR中的用户和组的概念,理解这些基础知识有助于更好的开发基于Si
近业务中需要实现服务器端与客户端的实时通信功能,对Signalr做了一点总结和整理。SignalR作为ASPNET的一个库,能够简单方便地为应用提供实时的服务器端与客户端双向通信功能。SignalR
本质上是小程序端用websocket连接服务器端的signalRsignalRjsvarsignalR(function(){letrecordCode0x1e;letrecordStringStri
Signalr如何在服务器端主动发送消息到客户端情景:譬如一些系统消息的通知,会在服务端主动发送消息到客户端,第一步:先确定要在哪一个Hub发;第二步:取得该Hub的上下文,就可以调用相应的方法了pu
幕功能通常用于实时显示当前视频或者文档的评论内容,在上快速飞过的方式呈现,看起来比较酷炫。这种典型的多用户实时交互的功能,很适合使用SignalR实现,通过SignalR提供后台的服务推送功能,客户
一、引言在前一篇文章已经详细介绍了SignalR了,并且简单介绍它在AspnetMVC和WPF中的应用。在上篇博文介绍的都是群发消息实现,然而,对于SignalR是为了实时聊天而生的,自然少了不像
由于我的版本最低是22,所以只有把源码下下来自己改,如果你觉得太多了可自己编译成jar引用,本人不才,对java不是很熟悉,如果此版本中有错误还请大家指出来,此图显示的是安卓22与40的版本。chat