WebSocket(全双工通信协议)

# 简介 WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。HTML5 定义的 WebSocket 协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。 # API说明 websocket的API在LuatOS-Air lib有做封装,建议直接用lib的API接口。 |API接口| 描述| | --- | --- | | websocket.new()|创建 websocket 对象| | ws:on()|注册函数| | ws:start()|启动websocket| >详细的API介绍见 [websocket API章节](https://doc.openluat.com/wiki/21?wiki_page_id=2622"websocketAPI说明") # 实现流程 - 创建 websocket 对象 - 注册对应相关处理函数 - 启动任务进程 # 示例 相关实例程序在脚本库的demo\websocket文件夹下 - 创建 websocket 对象 ```lua local ws = websocket.new("ws://82.157.123.54:9010/ajaxchattest") ``` - 注册对应相关处理函数 这里注册了"open","message","send",close","error"事件的处理函数,回调方法,message|error|pong 形参是该方法需要的数据。 ```lua ws:on("open", function() ws:send("hello websocket server!") end) ws:on("message", function(msg) log.info("收到 websocket server 的消息:", msg) end) ws:on("sent", function() log.info("sent to websocket:", "发送消息已完成!") end) ws:on("error", function(msg) log.error("websocket error:", msg) end) ws:on("close", function(code) log.info("websocket closed,关闭码:", code) end) ``` # 常见问题 - websocket服务器的连接地址,格式为ws://xxx (或者wss://xxx)开头 - websocket 需要在任务中启动,带自动重连,支持心跳协议 - websocket心跳包,建议180秒