目录
1、websocket的环境准备
-
可以用python起一个WebSocket服务
- python运行websocket的代码很多,可以网上去找
# -*- coding:utf8 -*-
# ------------------------------------------------------
# ProjectName: xxx_web1
# FileName: ws1
# Author:
# Description:
# ------------------------------------------------------
import tornado.web
import tornado.websocket
import tornado.ioloop
import datetime
class WebSocketHandler(tornado.websocket.WebSocketHandler):
users = set()
def open (self):
self.users.add(self)
self.write_message(
u"[%s]-[%s]-进入" % (self.request.remote_ip, datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")))
print(u"[%s]-[%s]-进入" % (self.request.remote_ip, datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")))
def on_message (self, message):
for u in self.users:
u.write_message("收到消息" + message)
def on_close (self):
self.users.remove(self) # 用户关闭连接后从容器中移除用户
print(u"[%s]-[%s]-离开" % (self.request.remote_ip, datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")))
def check_origin (self, origin):
return True
application = tornado.web.Application([
(r"/", WebSocketHandler),
])
if __name__ == "__main__":
application.listen(9006)
tornado.ioloop.IOLoop.instance().start()
-
运行这个.py文件
-
然后websocket服务就已经启动了
-
还可以通过在线websocket测试网站进行测试
2、jmeter调用websocket
-
首先需要安装websocket的相关插件
- 才有相应的websocket的取样器
3、websocket理解
-
为什么要有websocket?
- 对于http协议来说,它只能由客户端发出请求,然后服务器做出响应,同时,服务器只能沿原路返回
- 那么服务器是不能主动给客户端发消息的!
-
那么像这种,如果服务器有更新,客户端如果要解决,只能通过比如”轮询“的方式请求服务端,这样效率低,耗资源等(需要不停连接,或者http连接始终打开灯)
-
websocket就能做到客户端能给服务器发消息的同时,还能做到服务器能主动给客户端发消息
- 比如微信、电商等的推送消息等
- 对于http协议来说,它只能由客户端发出请求,然后服务器做出响应,同时,服务器只能沿原路返回
-
http协议有加密的就是https协议,那么websocket也有类似的
- ws协议,就是没有加密的
-
wss协议,就是加密的ws协议