使用php textalk\websocket+ssl实现websocket客户端

wss认证模式:单向认证、双向认证
环境:php7.4、swoole4

单向认证

客户端校验服务的证书

  • 服务端配置
$server = new \swoole_websocket_server("0.0.0.0", 8001, SWOOLE_PROCESS, SWOOLE_SOCK_TCP | SWOOLE_SSL);
$listener = $server->listen("0.0.0.0", 8002, SWOOLE_SOCK_TCP | SWOOLE_SSL);
$listener->set([
	'ssl_key_file' => __DIR__ . "\\server8002.crt",				// 服务端证书文件
	'ssl_cert_file' => __DIR__ . "\\server8002.key.unsecure",	// 服务端key文件
]);
  • 客户端配置
$url = "wss://127.0.0.1:8002";
$context = stream_context_create([
     "ssl" => [
         "verify_peer" => true,					// 是否需要校验对端证书
         "verify_peer_name" => false,			// 是否校验peer_name,默认为true,如果为true,需要在客户端和服务端同时设置peer_name参数
         "allow_self_signed" => true,			// 使用自签名证书时开启
         "cafile" => __DIR__ . "\\ca8002.crt", 	// ca文件
     ]
 ]);

$client = new Client($url, [
     'context' => $context,
 ]);

双向认证

  • 服务端配置(php swoole)
$server = new \swoole_websocket_server("0.0.0.0", 8001, SWOOLE_PROCESS, SWOOLE_SOCK_TCP | SWOOLE_SSL);
$listener = $server->listen("0.0.0.0", 8002, SWOOLE_SOCK_TCP | SWOOLE_SSL);
$listener->set([
	'ssl_verify_peer' => true,									// 是否需要校验对端证书
	'ssl_allow_self_signed' => true,							// 使用自签名证书时开启
	'ssl_key_file' => __DIR__ . "\\server8002.crt",				// 服务端证书文件
	'ssl_cert_file' => __DIR__ . "\\server8002.key.unsecure",	// 服务端key文件
 	'ssl_client_cert_file'	=> __DIR__ . "\\ca8002.crt", 		// ca文件,
]);
  • 客户端配置(php textalk\websocket)
$url = "wss://127.0.0.1:8000";
$context = stream_context_create([
     "ssl" => [
         "verify_peer" => true,
         "verify_peer_name" => false,						// 是否校验peer_name,默认为true,如果为true,需要在客户端和服务端同时设置peer_name参数
         "allow_self_signed" => true,						// 使用自签名证书时开启
         "cafile" => __DIR__ . "\\ca8002.crt",				// ca文件
         "local_cert" => __DIR__ . "\\client.crt",			// 使用ca文件签发的客户端证书文件
         "local_pk" => __DIR__ . "\\client.key.unsecure",	// 使用ca文件签发的客户端key文件
     ]
 ]);

$client = new Client($url, [
     'context' => $context,
 ]);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用WebSocket++可以分为以下几个步骤: 1. 安装WebSocket++库:可以从GitHub上下载WebSocket++的源代码,然后编译安装。也可以使用包管理器进行安装,例如在Ubuntu上可以使用apt-get命令进行安装。 2. 创建WebSocket服务器或客户端使用WebSocket++提供的类和函数创建WebSocket服务器或客户端,并进行配置。例如,创建服务器可以使用websocketpp::server类,然后通过调用server::init_asio()函数初始化服务器的asio IO对象,最后调用server::listen()函数启动服务器。创建客户端可以使用websocketpp::client类,然后通过调用client::init_asio()函数初始化客户端的asio IO对象,最后调用client::connect()函数连接到服务器。 3. 处理WebSocket事件:使用WebSocket++提供的事件回调函数处理WebSocket的各种事件。例如,当服务器收到WebSocket连接请求时,可以通过设置on_open回调函数处理该事件;当服务器收到WebSocket消息时,可以通过设置on_message回调函数处理该事件。 4. 发送和接收WebSocket消息:使用WebSocket++提供的函数发送和接收WebSocket消息。例如,使用server::send()函数向客户端发送消息;使用client::send()函数向服务器发送消息;使用connection::send()函数向特定的连接发送消息。 5. 关闭WebSocket连接:使用WebSocket++提供的函数关闭WebSocket连接。例如,使用connection::close()函数关闭特定的连接;使用server::stop()函数停止服务器。 以上是WebSocket++的基本使用步骤,具体实现可以参考WebSocket++的官方文档和示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhang_z_w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值