web-msg-sender开启了SSL 结果服务启动不了

repoman

服务器按文档配置了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);

启动以后报错

图片

3543 4 0
4个回答

walkor

通过打印buffer(echo hex2bin('474554202f736f....'))能看出来客户端传递的是明文,不是加密数据,所以服务端有waring。

客户端链接时要把http改成https,也就是改用ssl加密方式传输才行。

  • repoman 2017-06-16

    意思是所有客户端请求那里 io连接的时候用https 服务器就这正常了吗

  • walkor 2017-06-16

    对,手册有强调这个哦

  • repoman 2017-06-16

    @1:现在是服务器端启动不了哦 客户端还没有连接呢啊

  • repoman 2017-06-16

    @1: 服务器端按手册配置启动不了

  • walkor 2017-06-16

    截图里看是已经启动成功了,只不过有一些客户端没有以正确的方式链接

  • walkor 2017-06-16

    不加q哈

  • repoman 2017-06-16

    @1:-_- 把客户端改成https的了 还是一样的错误

repoman

[attach]657[/attach]

  • 暂无评论
walkor

有其它地方在连呗。
比如有人开着老页面,里面还是以http方式连的。这种情况很常见。

  • repoman 2017-06-16

    还是没有起来 直接用浏览器访问io的地址 直接崩掉了 我记得 不用ssl 至少io地址浏览器是可以打开的

repoman

[attach]658[/attach]

  • 暂无评论
年代过于久远,无法发表回答
🔝