小程序实时 对接 tp3.2 实现聊天通过 websocket
主要参考网址
https://blog.****.net/weixin_41326021/article/details/81004981 主要代码
https://blog.****.net/RemixGdc/article/details/77323753 解决报错参考
第一步 安装 websocket 到 tp3.2 中运行
主要步骤
1 请参考 http://doc3.workerman.net/315116
只需配置电脑的 环境变量 即可,如果没有 php环境 请安装
2 下载的 workerman 文件夹可以放在任何位置,能在workerman控制器中 引入即可
我放在了 WWW\项目\application 目录下
务必 修改 workerman 文件夹中除Constants.php之外的所有php文件后缀为 .class.php 格式,否则运行不起来
3 我在 WWW\项目\application\Wxapi\Controller 目录下新建了 WorkermanController.class.php
WorkermanController.class.php 内容如下
<?php
namespace Wxapi\Controller;
use Common\Controller\HomebaseController;
use Workerman\Worker;
class WorkermanController{
// 第一种方式 开启服务
// public function index(){
// if(!IS_CLI){
// die("无法直接访问,请通过命令行启动");
// }
// $worker = new \Workerman\Worker('websocket://0.0.0.0:8000');
// // 当收到客户端发来的数据后返回hello $data给客户端
// $worker->onWorkerStart = function($worker){
// echo "Worker starting...\n";
// };
// $worker->onMessage = function($connection, $data)
// {
// // 向客户端发送hello $data
// $connection->send('hello '.$data);
// };
// // 运行worker
// Worker::runAll();
// }
// 进入项目根目录,执行下面的命令,即可运行 websocket
// php index.php Wxapi/Workerman
// 下面是第二种方法
public function index(){
$socket = new \Workerman\Worker('websocket://0.0.0.0:8000');
$socket->onMessage = function($connection, $data)
{
// 向客户端发送 $data
$connection->send($data);
};
Worker::runAll();
}
}
通过以上 3 个步骤,在composer 命令行中 cd 进入 项目根目录,执行
php index.php Wxapi/Workerman 即可成功运行 workerman 服务
注意,我写的 Wxapi/Workerman 是我的 控制器文件夹名 加 控制器名,请根据 实际 修改
如果没有composer 可通过 phpstudy 右键,其他高级应用,选择 php composer 运行即可
反正,一定要在 命令行中运行
如何查看 workerman 服务是否开启
打开 google F12 打开console 控制台,输入
// 假设服务端ip为127.0.0.1
ws = new WebSocket("ws://localhost:8000");
ws.onopen = function() {
alert("连接成功");
ws.send('tom');
alert("给服务端发送一个字符串:tom");
};
ws.onmessage = function(e) {
alert("收到服务端的消息:" + e.data);
};
即可,知道服务是否已开启
小程序方面 对接
请参考 https://blog.****.net/weixin_41326021/article/details/81004981
她这有源码,我就不上传了,只需要修改 websocket.js 中
// var url = 'ws://0.0.0.0:8000'; 注意 必须用 localhost
var url = 'ws://localhost:8000'; 这一条配置信息 ,即可
如果配置成功,那么即可成功实现聊天流程