作者:小--巍巍 | 来源:互联网 | 2023-08-09 10:06
thinkphp5.0的看云文档上有了一点说明 说明文档 这里主要说一下遇到的问题。 安装部分,可以自行百度,然后直接复制文档中的命令,直接安装就好。安装完毕以后,thinkphp5.0 根目录中的wendor目录中将多出一个 “workerman”目录,以及vendor\topthink目录中,多出“think-worker”目录。 关于server.php 文档说,放到项目根目录,其实这个文件放到哪个目录并没有什么关系。通过命令行访问到这个文件,然后执行它就可以了。关键是要保证其中的代码:
phpdefine ('APP_PATH' , __DIR__ . '/application/' );define ('BIND_MODULE' ,'push/Worker' );require __DIR__ . '/thinkphp/start.php' ;
访问的地址一定要正确,确保每一行代码中访问的目录都是可以正常访问到。不然执行中会提示找不到控制器或者模块之类的信息。
关于新建的模块和控制器: 按着server.php文件中的定义,首先确保APP_PATH常量定义的目录正确,只有此处定义正常,系统才能顺利找到push模块和Worker控制器,然后新建模块push,控制器Worker
Worker.php
{protected $socket = 'websocket://push.app:2346' ;/*** 收到信息* @param $connection* @param $data*/ public function onMessage ($connection, $data){$connection->send('我收到你的信息了' );}/*** 当连接建立时触发的回调函数* @param $connection*/ public function onConnect ($connection){}/*** 当连接断开时触发的回调函数* @param $connection*/ public function onClose ($connection){}/*** 当客户端的连接上发生错误时触发* @param $connection* @param $code* @param $msg*/ public function onError ($connection, $code, $msg){echo "error $code $msg\n" ;}/*** 每个进程启动* @param $worker*/ public function onWorkerStart ($worker){} }
这里不用担心 use think\worker\Server; 会找不到地方,系统会自动找到vendor\topthink目录当中的文件
关于访问
ws = new WebSocket("ws://mall.hi-fm.cn:2346" ); ws.onopen = function () { alert("连接成功" );ws.send('tom' );alert("给服务端发送一个字符串:tom" ); }; ws.onmessage = function (e) { alert("收到服务端的消息:" + e.data); };
这里要注意 ws = new WebSocket(“ws://mall.hi-fm.cn:2346”); 你自己的域名不要写错。不要http://头。 访问的时候,要在你指定的域名下,比如例子中的域名mall.hi-fm.cn中去访问你启用的Socket服务才可能有回应:
有人提供了一个demo,可以下载看一下。DEMO