quick WebSocket

将工程samples下的WebSockets工程的src/scenes 复制到自己的工程app/scenes/下

main.lua game.lua WebSockets.lua 复制到自己工程mian.lua同等级目录下,就可以运行了了。

其中使用到的接口函数

--connect阶段
function MainScene:onConnectClicked()
    if self.websocket then return end
    self.websocket = WebSockets.new("ws://echo.websocket.org")
    self.websocket:addEventListener(WebSockets.OPEN_EVENT, handler(self, self.onOpen))
    self.websocket:addEventListener(WebSockets.MESSAGE_EVENT, handler(self, self.onMessage))
    self.websocket:addEventListener(WebSockets.CLOSE_EVENT, handler(self, self.onClose))
    self.websocket:addEventListener(WebSockets.ERROR_EVENT, handler(self, self.onError))
end
--在调用send发送消息之前的4个消息回调 open、message、close、error
--onOpen如果链接成功,WebSocket就会调用onOpen,告诉调用者,客户端到服务器的通讯链路已经成功建立,可以收发消息了。
--onMessage 回传的消息
--onClose 不管是服务器主动还是被动关闭WebSocket,客户端将收到这个消息,需要做释放WebSocket内存置为nil操作
--onError客户端发送的请求,如果发生错误,就会收到onError消息,游戏根据不同的错误码,做出相应的处理。
function MainScene:onOpen(event)
    print("connected")
end

function MainScene:onMessage(event)
    if WebSockets.BINARY_MESSAGE == event.messageType then
        printf("receive binary msg: len = %s, binary = %s", string.len(event.message), bin2hex(event.message))
    else
        printf("receive text msg: %s", event.message)
    end
end

function MainScene:onClose(event)
    self.websocket = nil
end

function MainScene:onError(event)
    printf("error %s", event.error)
    self.websocket = nil
end
--发送text
function MainScene:onSendTextClicked()
    if not self.websocket then
        print("not connected")
        return
    end

    local text = "hello " .. tostring(math.random())
    if self.websocket:send(text) then
        printf("send text msg: %s", text)
    end
end
--发送binary
function MainScene:onSendBinaryClicked()
    if not self.websocket then
        print("not connected")
        return
    end

    local t = {}
    for i = 1, math.random(4, 8) do
        t[#t + 1] = string.char(math.random(0, 31))
    end
    local binary = table.concat(t)
    if self.websocket:send(binary, WebSockets.BINARY_MESSAGE) then
        printf("send binary msg: len = %d, binary = %s", string.len(binary), bin2hex(binary))
    end
end
--主动关闭webSocket(当不再使用websocket通讯时,调用close())

其中ws://echo.websocket.org是WebSocket.org 提供的一个专门用来测试WebSocket的服务器

时间: 2024-10-16 09:06:23

quick WebSocket的相关文章

web新特性 之 WebSocket

详情参见:你真的了解WebSocket吗?     WebSocket系列教程   HTML5新特性之WebSocket WebSocket协议是基于TCP的一种新的协议.WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符.它实现了浏览器与服务器全双工(full-duplex)通信.其本质是保持TCP连接,在浏览器和服务端通过Socket进行通信. 服务端与客户端的连接不断开,实现全双工的操作.及服务端或是客户端都会给对方发送消息. WebSocke

websocket之拨云见雾

websocket是基于http相应的特性弥补其不足(就是个socket,不再是一次请求一次相应) 但缺点就是只有在版本较高的浏览器才支持websocket. 浏览器: <script type="text/javascript"> var socket = new WebSocket("ws://127.0.0.1:8002/xxoo"); ... </script> 服务端: import socket sock = socket.soc

websocket

什么是websocket? 不错的介绍:https://www.zhihu.com/question/20215561 websocket是一种持久化的协议,实现了浏览器和服务端的全双工通信: 握手阶段与HTTP协议相同,返回状态码101(switching protocols): 握手阶段完成之后,按照websocket协议进行通信 应用场景: 浏览器与服务端需要实时通信的场景,以前的解决方式:ajax轮询.HTTP长连接.Flash等. 实现: 浏览器端 const ws = new Web

websocket链接数限制

无法解决 当我需要每跳转新打开一个页面链接一次websocket的时候,第六个开始loading,关掉前面的,会加载出来,查了查.... 由于websocket属于属于持久链接 不同的浏览器针对同一服务器的持久链接的数量限制如下: chrome  6 firefox  6 Safari 5 IE11以下 不支持 这种H5的新新技术不得不说有各种安全和兼容性问题,慎重选用

java SSM框架 多数据源 代码生成器 websocket即时通讯 shiro redis 后台框架源码

获取[下载地址]   QQ: 313596790官网 http://www.fhadmin.org/A 调用摄像头拍照,自定义裁剪编辑头像,头像图片色度调节B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器 freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块C 集成阿里巴巴数据库连接池druid  数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面都

异步通信----WebSocket

什么是WebSocket? WebSocket API是下一代客户端-服务器的异步通信方法.该通信取代了单个的TCP套接字,使用ws或wss协议,可用于任意的客户端和服务器程序.WebSocket目前由W3C进行标准化.WebSocket已经受到Firefox 4.Chrome 4.Opera 10.70以及Safari 5等浏览器的支持. WebSocket API最伟大之处在于服务器和客户端可以在给定的时间范围内的任意时刻,相互推送信息.WebSocket并不限于以Ajax(或XHR)方式通

QDjango,tufao,C++ websocket client/server

QDjango, a Qt-based C++ web frameworkhttps://github.com/jlaine/qdjango/ An asynchronous web framework for C++ built on top of Qt http://vinipsmaker.github.io/tufao/https://github.com/vinipsmaker/tufao C++ websocket client/server library http://www.za

PHP基于websocket实时通信的实现—GoEasy

PHP websocket实时消息推送 实现步骤如下: 1. 获取 GoEasy appkey. 在 goeasy 官网上注册一个账号,并新建一个 app. APP 创建好后系统会为该 app 自动生成两个 key, 一个既可以用来接收又可以用来推送 (supper key),另一个只可以用来接收(subscriber key). 2. 客户端订阅一个 channel. a. 在客户端引入 goeasy.js , js 地址: http://cdn.goeasy.io/goeasy.js 需要注

websocket实战(1) 入门

1.WebSocket介绍 1.1 概念 WebSocket是HTML5中一系列新的API,或者说新规范,新技术.支持页面上使用Web Socket协议与远程主机进行全双工的通信.它引入了WebSocket接口并且定义了一个全双工的通信通道,通过一个单一的套接字在Web上进行操作. 1.2 websocket vs HTTP 首先,web技术发展经历了以下阶段. 静态页面(html) 动态页面(cgi,j2ee,php...) Ajax技术 comet技术(轮询) 1.2.1 实现方案对比 举个