服务器按文档配置了SSL
文档:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
use PHPSocketIO\SocketIO;
// 传入ssl选项,包含证书的路径
$context = array(
'ssl' => array(
'local_cert' => '/your/path/of/server.pem',
'local_pk' => '/your/path/of/server.key',
'verify_peer' => false,
)
);
$io = new SocketIO(2021, $context);
$io->on('connection', function($connection)use($io){
echo "new connection coming\n";
});
Worker::runAll();
我的配置
<?php
use Workerman\Worker;
use Workerman\WebServer;
use Workerman\Lib\Timer;
use PHPSocketIO\SocketIO;
include __DIR__ . '/vendor/autoload.php';
// 全局数组保存uid在线数据
$uidConnectionMap = array();
// 记录最后一次广播的在线用户数
$last_online_count = 0;
// 记录最后一次广播的在线页面数
$last_online_page_count = 0;
$context = array(
'ssl' => array(
'local_cert' => dirname(__FILE__).'/socketssl/214155431650760.pem',
'local_pk' => dirname(__FILE__).'/socketssl/214155431650760.key',
'verify_peer' => false,
)
);
// PHPSocketIO服务
$sender_io = new SocketIO(2120,$context);
启动以后报错
通过打印buffer(echo hex2bin('474554202f736f....'))能看出来客户端传递的是明文,不是加密数据,所以服务端有waring。
客户端链接时要把http改成https,也就是改用ssl加密方式传输才行。
意思是所有客户端请求那里 io连接的时候用https 服务器就这正常了吗
对,手册有强调这个哦
@1:现在是服务器端启动不了哦 客户端还没有连接呢啊
@1: 服务器端按手册配置启动不了
截图里看是已经启动成功了,只不过有一些客户端没有以正确的方式链接
不加q哈
@1:-_- 把客户端改成https的了 还是一样的错误
[attach]657[/attach]
有其它地方在连呗。
比如有人开着老页面,里面还是以http方式连的。这种情况很常见。
还是没有起来 直接用浏览器访问io的地址 直接崩掉了 我记得 不用ssl 至少io地址浏览器是可以打开的
[attach]658[/attach]