
用之前一定要把对应的端口开启,我就是吃了这个亏,折腾了一下午 哈哈
安装服务端
安装:composer require hyperf/websocket-server
如果容器的php版本低于7.3的话,需要升级php版本,我也是百度了好久,又看了看问档找到了答案,下面先升级php版本
找到之前我发布docker安装hyperf教程,
docker run -it --name hyperf -v /www/nginx/www/hyperf:/hyperf-skeleton -p 9501:9501 -p 9502:9502 hyperf/hyperf /bin/bash
在后面加一句话执行一边这个命令
7.4-alpine:指定php版本
v3.11-swoole :指定swoole版本
:7.4-alpine-v3.11-swoole
docker run -it --name hyperf -v /www/nginx/www/hyperf:/hyperf-skeleton -p 9501:9501 -p 9502:9502 hyperf/hyperf:7.4-alpine-v3.11-swoole /bin/bash
因为容器内外的位置是一样的,所以代码也不会重置也是相当不错的,如果大家还有别的办法可以探讨一下,
安装WebSocket成功
安装文档添加对应的代码
文件位置:config/autoload/server.php
[
'name' => 'ws',
'type' => Server::SERVER_WEBSOCKET,
'host' => '0.0.0.0',
'port' => 9502,
'sock_type' => SWOOLE_SOCK_TCP,
'callbacks' => [
Event::ON_HAND_SHAKE => [HyperfWebSocketServerServer::class, 'onHandShake'],
Event::ON_MESSAGE => [HyperfWebSocketServerServer::class, 'onMessage'],
Event::ON_CLOSE => [HyperfWebSocketServerServer::class, 'onClose'],
],
],
文件位置:config/routes.php
Router::addServer('ws', function () {
Router::get('/', 'AppControllerv1SocketWebSocketController');
});
创建控制器
push($frame->fd, 'Recv: ' . $frame->data);
}
public function onClose($server, int $fd, int $reactorId): void
{
var_dump('closed');
}
public function onOpen($server, Request $request): void
{
$server->push($request->fd, 'Opened');
}
}
启动hyperf
可以看到9501 和 9502都已经启动了
安装客户端
composer require hyperf/websocket-client
前端页面访问9502端口
WebSocket测试
请按 F12 打开控制台查看消息
打开调节模式查看,现在都已经可以互相通信了。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)