请教个问题:workerman与thinkPHP整合怎么处理的呢?

MyLover

thinkPHP的项目可以单独运行了,但是与flash交互的传值方式不理想,所以考虑用workerman(socket)实现与flash交互,但是tp和wk的整合不会弄,还请麻烦赐教~
是不是项目都需要event.php类,这个类中对于与flash交互又该怎么写呢?

6697 7 0
7个回答

jy03204340

我之前做的方式是两者完全独立,只是客户端部分与workerman建立关系,这一点workerman-chat的例子里有,你可以把thinkphp的web想象成nodejs或者纯js的客户端,使用workerman的client_id作为唯一id,存入sql,从而建立通信关系,剩余的逻辑就需要自己去建立了,而workerman的服务器端我用的是原生php的方式,这一点walker可以给你一些好的建议。

  • 暂无评论
walkor

tp用来做web服务,wm用来做socket服务,二者独立运行,没必要整合。
tp和wm没有直接的联系,tp的web项目吐出flash页面,flash在用户浏览器中发起socket连接到wm,然后进程通讯即可。

基于GatewayWorker框架需要event类,如何写请参考手册。
走flash走socket可以用Text协议(包的格式为 文本+换行符),
服务端可以直接参考 https://github.com/walkor/GatewayWorker,看readme

  • 暂无评论
MyLover

因为tp从数据库读取数据之后要传给flash,而flash点击事件中要传值给tp进行数据库处理~ 这个用gateway···?

  • 暂无评论
walkor

gatewayWorker可以操作数据库的,没必要中间加一层tp

  • 暂无评论
MyLover

gatewayworker使用text协议时,怎么访问web端html页面呢?毕竟flash是放到html页面的~

$web = new WebServer("http://0.0.0.0:8283");
$web->count = 6;
$web->name = 'ssleWeb';
$web->addRoot('www.your_domain.com', __DIR__.'/Web');

这样写的话会提示同一页面初始化多个worker(前面有初始化gateway)
$gateway = new Gateway("Text://0.0.0.0:8282");

MyLover

另外:页面跳转怎么控制的呢?(需先解决html显示)
比如:服务端判断用户未登录,要跳转到登录页面,并且提示用户登录信息(密码错误等)

  • 暂无评论
hehe

这个workerman与thinkPHP的实战项目视频不错,利用websocket协议实现了长连接,来做即时通讯,在线客服。地址 http://study.163.com/course/introduction/1005015012.htm?share=2&shareId=400000000388007

  • 暂无评论
年代过于久远,无法发表回答
🔝