温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Swoole WebSocket怎么开启SSL支持

发布时间:2021-09-14 17:16:04 来源:亿速云 阅读:249 作者:chen 栏目:大数据

本篇内容介绍了“Swoole WebSocket怎么开启SSL支持”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

首先要申请SSL证书,必须为pem格式。

如图为宝塔环境所申请Let's Encrypt免费证书的所在位置:

Swoole WebSocket怎么开启SSL支持

Linux安装openssl支持:

yum install -y openssl

移到Swoole安装包目录,重新编译安装,并加入openssl支持:(相关文章:Linux下源码包安装Swoole及基本使用)

phpize ./configure --enable-openssl --with-php-config=/www/server/php/72/bin/php-config make clean make && make install

查看Swoole已经开启openssl支持:

php --ri swoole

Swoole WebSocket怎么开启SSL支持

Websocket服务器中开启SSL隧道,并配置证书路径:

ws_server.php:

<?php    //创建websocket服务器对象,监听0.0.0.0:9501端口,开启SSL隧道    $ws = new swoole_websocket_server("0.0.0.0", 9501, SWOOLE_PROCESS, SWOOLE_SOCK_TCP | SWOOLE_SSL);        //配置参数    $ws ->set([  'daemonize' => false, //守护进程化。  //配置SSL证书和密钥路径  'ssl_cert_file' => "/etc/letsencrypt/live/oyhdo.com/fullchain.pem",  'ssl_key_file'  => "/etc/letsencrypt/live/oyhdo.com/privkey.pem"    ]);     //监听WebSocket连接打开事件    $ws->on('open', function ($ws, $request) {        echo "client-{$request->fd} is open\n";    });     //监听WebSocket消息事件    $ws->on('message', function ($ws, $frame) {        echo "Message: {$frame->data}\n";        $ws->push($frame->fd, "server: {$frame->data}");    });     //监听WebSocket连接关闭事件    $ws->on('close', function ($ws, $fd) {        echo "client-{$fd} is closed\n";    });     $ws->start();

页面js中即可使用wss连接WebSocket服务器(使用与证书对应的域名):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>WebSocket</title></head><body></body><script type="text/javascript">var websocket = new WebSocket('wss://www.oyhdo.com:9501');  websocket.onopen = function (evt) { onOpen(evt) }; websocket.onclose = function (evt) { onClose(evt) }; websocket.onmessage = function (evt) { onMessage(evt) }; websocket.onerror = function (evt) { onError(evt) };  function onOpen(evt) {  console.log("Connected to WebSocket server.");   websocket.send('666');} function onClose(evt) {   console.log("Disconnected"); }function onMessage(evt) {   console.log('Retrieved data from server: ' + evt.data); } function onError(evt) {   console.log('Error occured: ' + evt.data); }</script></html>

启动WebSocket服务:

php ws_server.php

浏览器访问结果:(注意必须为https访问)

Swoole WebSocket怎么开启SSL支持

服务器监听结果:

Swoole WebSocket怎么开启SSL支持

“Swoole WebSocket怎么开启SSL支持”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI