linux检测是否支持workerman,Linux系统安装workerman,启动wss 服务

安装workerman其实很简单,只要会简单的linux口令就可以搞定,

这里我给大家演示一下如何安装workerman 进入终端的过程就不用演示了吧...

输入root及密码进入终端后找到站点根目录 先使用官方自带的脚本测试下服务器的PHP环境是否满足WorkerMan允许要求

curl -Ss http://www.workerman.net/check.php | php

如图所示,本机的posix扩展没有安装,那我们使用以下命令进行安装pcntl和posix扩展。

yum install php-process

9bd8ef8fcb9c8d18e97d940fe0f1465ccee.jpg

扩展安装完成后,再次检测PHP环境,显示一切正常。

a0768a036f7f7b2a57ceb6398b4982c1316.jpg

官方提示为了支持更大的并发连接数,建议安装event扩展或者libevent扩展(二者作用相同,二选一即可),我们进行libevent扩展安装如下

81eea17f4f44a8923ed04ed39c8e44718b8.jpg

扩展安装成功后,一切准备就绪,通过wget口令下载WorkerMan源码包

wget http://www.workerman.net/download/workermanzip

下载完成后就可以看到下图中的workermanzip包,执行 unzip 进行解压

0a0d4f01a14b1b7bd69ec796f06523f0276.jpg

解压成功,将Workerman-master 重命名   如图

mv Workerman-master Workerman

3873f808e65ba72c6999087b40c7325b9dc.jpg

创建test.php文件代码如下

use Workerman\Worker;

require_once __DIR__ . '/Workerman/Autoloader.php';

// 创建一个Worker监听2345端口,使用http协议通讯

$http_worker = new Worker("http://0.0.0.0:2345");

// 启动4个进程对外提供服务

$http_worker->count = 4;

// 接收到浏览器发送的数据时回复hello world给浏览器

$http_worker->onMessage = function($connection, $data)

{

// 向浏览器发送hello world

$connection->send('hello world');

};

Worker::runAll();

执行 php test.php start 看到如下图表示workerman安装成功叻...

...

dd86e2aa9221cac1c8ffd2992ff679e1c9a.jpg

用守护进程模式启动可以后台运行 workerman  任务:

php start.php start -d (-d 守护模式启动)

报错可能原因:

php加载sockets 和libevent模块的顺序导致

解决方法:

vim /etc/php.d/libevent.ini

注释掉:extension = libevent.so

vim /etc/php.d/sockets.ini

注释掉:extentsion = sockets.so

然后在php.ini中添加这两个扩展的引用

vim /etc/php.ini

extension = sockets.so

extension = libevent.so

将上面内容添加到php.ini中,注意添加顺序。

Workerman是一个高性能的PHP socket 服务器框架,用于构建长连接、WebSocket、Http、Tcp、Udp服务器。它使用PHP实现,无需编译,安装简单,非常适合快速开发生产级别的应用。 要实现在Workerman中使用wss(WebSocket Secure)协议时的断线自动重连功能,你需要在WebSocket的客户端逻辑中添加重连的代码。以下是一个基本的例子: ```php use Workerman\Worker; use Workerman\Lib\Timer; use Workerman\Connection\TcpConnection; require_once __DIR__ . '/Workerman/Autoloader.php'; // 创建Worker监听2346端口,使用http协议通讯 $http_worker = new Worker("websocket://0.0.0.0:2346"); // 启动4个进程对外提供服务 $http_worker->count = 4; // 当收到客户端发来的数据时 $http_worker->onMessage = function(TcpConnection $connection, $data) { // 回发数据给客户端 $connection->send('hello ' . $data); }; // 当客户端连接时 $http_worker->onConnect = function(TcpConnection $connection) { echo "New connection\n"; }; // 当客户端断开连接时 $http_worker->onClose = function(TcpConnection $connection) { echo "Connection closed\n"; }; // 定时器,每10秒向客户端发送一次数据 Timer::add(10, function() use ($http_worker) { static $connections = array(); foreach($http_worker->connections as $connection) { $connections[] = $connection; } foreach($connections as $connection) { $connection->send('time '.date('Y-m-d H:i:s')); } }); // 运行worker Worker::runAll(); ``` 对于客户端自动重连的部分,通常需要在客户端JavaScript中处理WebSocket连接的异常,例如: ```javascript var ws = new WebSocket('wss://yourserver.com/path'); ws.onopen = function(event) { // 连接成功 }; ws.onmessage = function(event) { // 接收到消息 }; ws.onerror = function(event) { // 发生错误 console.error('WebSocket error', event); // 尝试重连 reconnect(); }; ws.onclose = function(event) { // 连接关闭 console.error('WebSocket connection closed', event); // 尝试重连 reconnect(); }; function reconnect() { var delay = 1000; // 初始延迟时间 setTimeout(function() { // 重新创建WebSocket连接 ws = new WebSocket('wss://yourserver.com/path'); // 监听新连接的事件 ws.onopen = function(event) { // 重连成功 delay = 1000; // 重置延迟时间 }; ws.onmessage = function(event) { // 接收到消息 }; ws.onerror = function(event) { // 如果连接失败,递增延迟时间后重试 console.error('WebSocket reconnection failed', event); delay *= 2; reconnect(); }; ws.onclose = function(event) { // 如果连接关闭,递增延迟时间后重试 console.error('WebSocket reconnection closed', event); delay *= 2; reconnect(); }; }, delay); } ``` 在上述客户端代码中,我们定义了一个`reconnect`函数,它会根据设定的延迟时间尝试重新连接服务器。连接失败时,会增加延迟时间,实现指数退避的重连策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值