python tornado websocket ping_tornado WebSocket详解

1.什么是WebSocket

websocket和长轮询的区别是客户端和服务器之间是持久连接的双向通信。

协议使用ws://URL格式,但它在是在标准HTTP上实现的。

2.tornado的WebSocket模块

tornado在websocket模块中提供了一个WebSocketHandler类,这个类提供了和已连接的客户端通信的WebSocket事件和方法的钩子。

open方法,新的WebSocket连接打开时被调用。

on_message方法:连接收到新消息时被调用。

on_close方法:客户端关闭时被调用。

write_message方法:向客户端发送消息时被调用。

close方法:关闭连接时调用。

3.WebSocket使用示例

1)和http长轮询中示例一样,区别在于“主页长轮询商品当前库存”的方式。

classWebSocketHandler(tornado.websocket.WebSocketHandler):defopen(self):

self.application.shoppingCart.register(self.callback)defon_close(self):

self.application.shoppingCart.unregister(self.callback)defon_message(self):pass

defcallback(self,count):

self.write_message('{"inventorycount":"%s"}'%count)

on_close方法:在客户端关闭时被调用。

on_message方法:因为服务端不需要接收客户端消息,所以这里是个空函数

2)客户端WebSocket请求如下

functionrequestInventory() {var host = 'ws://localhost:9999/websocket';var websocket = newWebSocket(host);

websocket.onopen= function(evt) { };

websocket.onmessage= function(evt) {

$('#count').html($.parseJSON(evt.data)['inventoryCount']);

};

websocket.οnerrοr= function(evt) { };

}

3)运行结果

打开多个客户端,当做添加/删除操作时,可以观察到库存数量会实时变动。

4.WebSocket和长轮询

WebSocket和长轮询的不同之处在于使用了一个持久的长连接,来代替长轮询中循环发送请求连接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值