swoft-cloud / forum

Swoft Official Forum. Swoft 官方论坛
https://github.com/swoft-cloud/forum/issues
2 stars 1 forks source link

成功开启websocket,但无法实现wss连接 #4

Open msmhlu opened 5 years ago

msmhlu commented 5 years ago

已配置ssl。开启http服务能正确使用https:访问。使用websocket服务,访问时使用https,无法房问只能用http,且在JavaScript中连接wss是报错的。

inhere commented 5 years ago

贴一下如何配置的,以及客户端如何使用的简单代码

chunpat commented 5 years ago

同问 版本swoft2.0, bean.php的ws配置

 'wsServer'          => [
        'class'   => WebSocketServer::class,
        'port'    => 9088,
        'on'      => [
            // Enable http handle
            SwooleEvent::REQUEST => bean(RequestListener::class),
        ],
        'debug'   => env('SWOFT_DEBUG', 0),
        // 'debug'   => env('SWOFT_DEBUG', 0),
        /* @see WebSocketServer::$setting */
        'setting' => [
            'log_file' => alias('@runtime/swoole.log'),
            'worker_num'            => env('WORKER_NUM', 1),
            'max_request'           => env('MAX_REQUEST', 10000),
            'daemonize'             => env('DAEMONIZE', 0),
            'dispatch_mode'         => env('DISPATCH_MODE', 2),
            'package_max_length'    => env('PACKAGE_MAX_LENGTH', 2048),
            'upload_tmp_dir'        => env('UPLOAD_TMP_DIR', '@runtime/uploadfiles'),
            'task_ipc_mode'         => env('TASK_IPC_MODE', 1),
            'message_queue_key'     => env('MESSAGE_QUEUE_KEY', 0x70001001),
            'open_http2_protocol'   => env('OPEN_HTTP2_PROTOCOL', false),
            'ssl_cert_file'         => env('SSL_CERT_FILE', ''),
            'ssl_key_file'          => env('SSL_KEY_FILE', ''),
        ],
    ],

.env也加上了

OPEN_HTTP2_PROTOCOL=true
SSL_CERT_FILE=相应的证书地址
SSL_CERT_FILE=相应的证书地址

客户端连接报错,SSL错误

Error in connection establishment: net::ERR_SSL_PROTOCOL_ERROR
inhere commented 5 years ago

@FromChinaBoy @msmhlu

参考https的配置 https://swoft.org/docs/2.x/zh-CN/http-server/setting.html#%E5%90%AF%E7%94%A8https%E6%94%AF%E6%8C%81

需要设置 'type' => SWOOLE_SOCK_TCP | SWOOLE_SSL

再试试看呢?

chunpat commented 5 years ago

@inhere 我的可行,感谢大佬

msmhlu commented 5 years ago

@inhere http配置 : 1568961457(1) ws 配置: 1568961567(1) 启动: 1568961598(1)

msmhlu commented 5 years ago

有点尴尬,尝试几次之后,现在通过websocket开启的http不能正常使用了。 原由:我的测试服务器(阿里云的),cpu100%了,我重启之后就出现了。 这种情况。感觉Swoft有些缓存文件是否要深入到重启运行服务的环境,单纯的重启或者reload 服务无限无效。比如 http:restart。有次我连访问的控制器文件都删除了,浏览器做了缓存清除,依然可以访问。后面干脆重器linux服务。

inhere commented 5 years ago

@msmhlu restart 总是会生效的

至于文件被删除,这个不可能吧。。。

inhere commented 5 years ago

@msmhlu 你这配置有问题,你看下 ws server 配置那块的文档,如何同时开启http

msmhlu commented 5 years ago

@inhere 感谢大佬。 配置在尝试中实际早已经实现成功,不过我在反复修改时曾将默认18308更为了13808。低级错误在此出现。 目前已经实现了,从ws server启动实现https。