因为项目需要,需要在网页上实现消息的推送。在百度上搜索了一下,发现实现网页上的消息推送,可以使用asp.net 中的SignalR类库,当然也可以使用H5的WebSocket Ajax的轮回。当然此处我们使用asp.net 中的SignalR类库。因为它可以实现网页上消息的实时推送。什么是实时推送呢,我简单的说一下我个人的理解吧。实时:在同一时间类发生的事情,当然在计算机中并不是绝对的实时,因为CPU在同一时间片只能处理一个任务,那么这个时候疑问又来了?
我们平时使用电脑又上网,又听音乐是如何实现的呢,因为现在的CPU的计算速度很快。CPU会把处理不同的任务的时间片,CPU会把时间片划到很小,很小,小到我们人类感知不到。比如在现在这个时间片上,CPU正在处理音乐任务,在下一个时间片的时候,CPU又在处理上网任务。所以我认为在计算机并没有绝对的实时,只是我们人类感知不到罢了。
推送:在此处的推送是指在网页消息推送。例如:用户A和B分别在各自的电脑打开打开一个相同的消息推送网页。假设用户A现在向用户B发送消息。就要经历一个这样的过程 用户A->Server->用户B。当然具体的底层实现过程,我就不在些探讨了哈。因为这个不是现在所要探讨的主题。因为Server有地址一般是固定不变的。所以客户端向服务器发送消息比较容易,因为目的地址固定。那服务器如何向客户端发送消息呢,这个就有点难道了因为客户端的地址不固定的,并且http是无状态的是不能记住用户的地址的。
所以为了解决这一个问题,计算机的先辈们用到了几个方法:
1、客户端"心跳"。每隔一段时间去访问服务器,看看服务器有没有任务给其客户端。Ajax的轮回就是使用的这个方法。缺点就是实时性不太高。</