); //连接服务器 ws.onopen = function (+ this.readyState); }; ws.onmessage = function (+ event.data); }; ws.onclose = function (+ this.readyState); }; ws.onerror = function (); };
还可以通过send的方式发送消息
ws.send();
WebSocket具有较为复杂的协议,需要在服务端做额外编程才能进行数据通讯。有关协议的详细内容,我会在以后的文章中进行解释。
WebSocket + MessageQueue
MessageQueue,简称MQ,也就是消息列队。是一种常常用于Tcp服务端的技术。通过生产和访问各种消息类型,MQ服务器会将生产者所生成的消息发给感兴趣的客户端。市面上有很多的MQ框架,比如:ActiveMQ。
ActiveMQ已经支持了WebSocket协议,也就意味着,WebSocket已经可以作为一个生产者或一个消费者,与MQ服务器连接。
开发者可以通过MQTT的JS脚本,连接上MQ服务器,同时将Web服务器也连上MQ服务器,从此可以告别了Http通讯协议,完完全全使用Socket通讯来完成数据的交换。
总结:
总得来说,在HTML5规范下,最推荐使用ServerSent和WebSocket的方式进行服务器消息的推送。
对比这两种方式。
ServerSent的方式,可以使服务端的开发依然依用以前的方式,但是其工作方式与Comet类似。
而WebSocket的方式,则对服务端的开发有着较高的要求,但其工作方式是完全的推送。
我本人其实挺偏向WebSocket + MQ的工作方式,但是对于老项目的翻新,还是用SeverSent比较好
结尾
本文为作者原创,转载请注明出处:
文章中的相关代码可以在 中的ServerSent目录中查看