workerman wss 配置备忘录

服务器相关软件版本

centos7/8
apache 2.2
php 7.2+

主要参考官方的文档: https://www.workerman.net/doc/workerman/faq/secure-websocket-server.html

SSL证书 阿里云 有20个免费证书,足够测试使用。

需要特别注意:

1.使用SSL 证书,防火墙需要开启 443 端口
2.Apache 需要安装 mod_ssl模块。(如果没有该模块,重启会报错:根据 提示 用 journalctl -xe命令查看错误原因)执行yum -y install mod_ssl 安装

SSL配置相关参考文档

结合综合起来看(但不可全部照搬这两个文档的内容, 需要参考上述文档链接综合看)
阿里云 Apache https://help.aliyun.com/document_detail/98727.html
华为云 Apache https://support.huaweicloud.com/usermanual-ccm/ccm_01_0083.html

我的实际操作:

我的Apache 少 mod_ssl 模块,手动安装上去的,其SSL的配置文件ssl.conf(也可能是httpd-ssl.conf)地址在 /etc/httpd/conf.d目录下;配置如下:

#跟写在文档的最后
<VirtualHost *:443>
    ServerName   www.baidu.com:443
    DocumentRoot  "/var/www/www.baidu.com"

    SSLProxyEngine on

    ProxyRequests Off
    ProxyPass /wss ws://127.0.0.1:8282/wss
    ProxyPassReverse /wss ws://127.0.0.1:8282/wss

    SSLProtocol all -SSLv2 -SSLv3
    SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
    SSLHonorCipherOrder on
    SSLCertificateFile /etc/httpd/cert/www.baidu.com_public.crt
    SSLCertificateKeyFile /etc/httpd/cert/www.baidu.com.key
    SSLCertificateChainFile /etc/httpd/cert/www.baidu.com_chain.crt
</VirtualHost>

PHP 代码 ws_test.php (Workerman官方示例有)


use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';

// 注意:这里与上个例子不同,使用的是websocket协议
$ws_worker = new Worker("websocket://0.0.0.0:8282");

// 启动4个进程对外提供服务
$ws_worker->count = 1;

// 当收到客户端发来的数据后返回hello $data给客户端
$ws_worker->onMessage = function(TcpConnection $connection, $data)
{
    // 向客户端发送hello $data
    $connection->send('hello ' . $data);
};

// 运行worker
Worker::runAll();

js 代码 (Workerman官方示例有)

let ws = new WebSocket("wss://www.baidu.com/wss");//需要注意 主机域名后跟 /wss
ws.onopen = function() {
    console.log("连接成功");
    ws.send('tom');
    console.log("给服务端发送一个字符串:tom");
};
ws.onmessage = function(e) {
    console.log("收到服务端的消息:" + e.data);
};

你可能感兴趣的:(vue,workerman,javascript,wss,workerman)