这与redis无关,这可以用WebSocket解决,.net中对应的实现有SignalR,详见 Introduction to SignalR
谢谢,我知道websocket,但是我想知道的是redis是不是也能实现这种消息推送的功能,在网页上面(向我说的这种做法)
@hslgmq: redis中的“消息”是指消息队列中的消息,消息队列有2种模式:发布者订阅者模式与生产者消费者模式,没有推送模式,详见 Redis 做消息队列
对于缓存而言,无所谓编码,你只需要保证你进去的时候是什么encoding,出来的时候使用相同encoding读就可以了。
redis中的mq功能很简单,你如果想实现推送其实自己封一下原生接口自己轮询pop就好了。
这个队列通常用于内网服务之间。即使客户端极端点都用符合标准的mq,如activemq,rabbitmq,msmq...并且可以集成认证等。
并且这些mq的协议都往往不是基于http的(当然实际通信层都会做抽象,udp、tcp、pipe等),意味着网页是无法使用的(除非activex)。
如果你是服务器来通讯的,那么这个就失去了意义 —— 服务器端随便刷刷都可以实现。
也许你混淆了些东西,比如控制台打印int,Write实现了int的ToString的调用(app默认都是使用utf8),但是你弄到html里面肯定存在问题了,首先(html 是基于字符的编码,协议包不同部分的规定不一样)要基本的字符编码,然后需要html编码。即使你使用的是字符编码,html doc本身还有约定,比如doc head的说明和doc的编码一致性等等。
LZ想问的应该是 页面和服务器 双向通信的问题。这个和Redis倒没什么关系。Redis订阅通知到 服务器这个没问题。但是如何从服务器主动把消息通知到web页面上?
一种是利用websocket技术来实现,这个需要浏览器版本支持
另一种简单点,web页面 通过ajax 不停的轮询,从服务器拉取最新的消息。
推荐使用 .net signalR 组件,智能支持上面2种方案