php swoole 扩展仿佛为php开发打开了一扇窗户
php workman和swoole原来是两个东东
- swoole的使用范围更广,能做更多事应该
websocket的介绍
socket 与 websocket也是两个东东
wss 配置 和 nginx的配置
- wss swoole 服务端
<?php
error_reporting(E_ALL);
set_time_limit(0);
//创建websocket服务器对象,监听0.0.0.0:9502端口
$ws = new swoole_websocket_server("0.0.0.0", 9505, SWOOLE_PROCESS, SWOOLE_SOCK_TCP | SWOOLE_SSL);
$config = [
'daemonize' => true,
'ssl_key_file' => '/workspace/file/2191282_www.havetatami.com.key',
'ssl_cert_file' => '/workspace/file/2191282_www.havetatami.com.pem'
];
$ws->set($config);
//监听WebSocket连接打开事件
$ws->on('open', function ($ws, $request) {
var_dump($request->fd);
$ws->push($request->fd, "hello, welcome\n");
});
//监听WebSocket消息事件
$ws->on('message', function ($ws, $frame) {
var_dump($ws->connection_list());
foreach ($ws->connection_list() as $fd){
$ws->push($fd, "server: {$frame->data}");
}
});
//监听WebSocket连接关闭事件
$ws->on('close', function ($ws, $fd) {
echo "client-{$fd} is closed\n";
});
$ws->start();
- wss 浏览器端
<html>
<head>
<meta charset=utf-8 >
<title>test</title>
</head>
<body>
<h3 style="text-align:center;">test</h3>
<script>
var wsServer = 'wss://www.havetatami.com:9502/websocket';
var websocket = new WebSocket(wsServer);
function ssend(){
websocket.send(1);
setTimeout(ssend, 100);
}
websocket.onopen = function (evt) {
console.log("Connected to WebSocket server.");
//ssend();
};
websocket.onclose = function (evt) {
console.log("Disconnected");
};
websocket.onmessage = function (evt) {
console.log('Retrieved data from server: ' + evt.data);
};
websocket.onerror = function (evt, e) {
console.log('Error occured: ' + evt.data);
};
</script>
</body>
</html>
- nginx 配置
server{
listen 443 ssl;
server_name www.havetatami.com;
ssl_certificate /workspace/file/www.havetatami.com.chained.crt;
ssl_certificate_key /workspace/file/www.havetatami.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
root /workspace/web/gitee/havetatami;
location / {
index index.php index.html index.htm;
if (!-e $request_filename) {
rewrite ^/index.php(.*)$ /index.php?s=$1 last;
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
access_log /workspace/data/nginx/log/www_havetatami_com_access.log;
}
server{
listen 80;
server_name www.havetatami.com;
return 301 https://$server_name$request_uri;
}
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream websocket {
server 39.106.58.30:9505;
}
server{
listen 9502 ssl;
server_name www.havetatami.com;
ssl_certificate /workspace/file/2191282_www.havetatami.com.pem;
ssl_certificate_key /workspace/file/2191282_www.havetatami.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
root /workspace/web/gitee/havetatami;
location /websocket {
proxy_pass https://websocket;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
access_log /workspace/data/nginx/log/www_havetatami_com_access1.log;
}
其它参考文档
- https://blog.csdn.net/weixin_42579642/article/details/85266997
- https://www.cnblogs.com/cuishuai/p/9273037.html
- 搜索技术问题谷歌还是更好
题外话
- 今天看了书,看到了一句话,安慰自己:一个人愿意让你爱他,就已经是你很大的幸运了。你得好好爱,别辜负了对方的信任和期待。
原文地址:https://www.cnblogs.com/jjxhp/p/11409749.html
时间: 2024-10-14 15:15:13