热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

GatewayWorkerthinkphp小程序wss://配置宝塔

GatewayWorker-thinkphp-小程序wss:配置宝塔,Go语言社区,Golang程序员人脉社

在这里插入图片描述





在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

废话不多说 测试 结果

 composer require workerman/workerman

在这里插入图片描述

TP 根目录

 #!/usr/bin/env php
 uid))
			    {
			       // 没验证的话把第一个包当做uid(这里为了方便演示,没做真正的验证)
			       $connection->uid = $message_data['client_name'];
			       /* 保存uid到connection的映射,这样可以方便的通过uid查找connection,
			        * 实现针对特定uid推送数据
			        */
			    	$worker = $this->worker;
			    	foreach($worker->connections as $conn)
				    {
				        $conn->send("{'type':'login','data':'".$message_data['client_name']."登陆成功'}");
				    }
			    }

            case 'say':
               
               	return;
        }
    }

    /**
     * 当连接建立时触发的回调函数
     * @param $connection
     */
    public function onConnect($connection)
    {

    }
    /**
	 * 向所有验证的用户发送消息
     */
    public function sendAllMessage(){
    	global $worker;
	   	foreach($worker->uidConnections as $connection)
	   	{
	    	$connection->send($message);
	   	}
    }
    /**
     * 当连接断开时触发的回调函数
     * @param $connection
     */
    public function onClose($connection)
    {
        
    }

    /**
     * 当客户端的连接上发生错误时触发
     * @param $connection
     * @param $code
     * @param $msg
     */
    public function onError($connection, $code, $msg)
    {
        echo "error $code $msgn";
    }

    /**
     * 每个进程启动
     * @param $worker
     */
    public function onWorkerStart($worker)
    {

    }
}

在这里插入图片描述
think php lib 目录

 
// +----------------------------------------------------------------------

namespace thinkworker;

use WorkermanWorker; 
use WorkermanConnectionTcpConnection;
use WorkermanLibTimer;

/**
 * Worker控制器扩展类
 */
abstract class Server
{
    protected $worker;
    protected $socket    = '';
    protected $protocol  = 'https';
    protected $host      = '0.0.0.0';
    protected $port      = ' ';
    protected $processes = 4;

    /**
     * 架构函数
     * @access public
     */
    public function __construct()
    {
        
        
        
       $cOntext=array(
           
 
           
           'ssl'=> array(
               'local_cert'=>' .crt',
               'local_pk'    => ' .key',
                 'verify_peer' => false,
               )
           
           ); 
        
        
        
        // 实例化 Websocket 服务
        $this->worker = new Worker($this->socket ?: $this->protocol . '://' . $this->host . ':' . $this->port, $context);
        // 设置进程数
        
        
        $this->worker->transport = 'ssl';
        
        $this->worker->count = $this->processes;
        // 初始化
        $this->init();
        
        
        // 设置回调
        foreach (['onWorkerStart', 'onConnect', 'onMessage', 'onClose', 'onError', 'onBufferFull', 'onBufferDrain', 'onWorkerStop', 'onWorkerReload'] as $event) {
            if (method_exists($this, $event)) {
                $this->worker->$event = [$this, $event];
            }
        }
        // Run worker
        Worker::runAll(); 
    }

    protected function init()
    {
    }

}

在这里插入图片描述

 

 map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}
upstream websocket {
   server  81 3:448;
     #这里可以是多个服务端IP(分多行),设置权重就可以实现负载均衡了
    server  8 3:2346;
}

#支持 wss
server {
    listen 450 ssl; 
    server_name  et.com;
    #ssl on;
   ssl_certificate    in.pem;
    ssl_certificate_key     ey.pem;
    ssl_session_timeout 20m;
    ssl_verify_client off;
    
    
      location /{
      proxy_pass http://8 43:2346;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
    
 
 
    
     
}
 



server
{
    listen 80;
	listen 443 ssl http2;
    server_name  et.com;
    index index.php index.html index.htm default.php default.htm default.html;
    root  et.com/web;
    
    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
    #HTTP_TO_HTTPS_START
    if ($server_port !~ 443){
        rewrite ^(/.*)$ https://$host$1 permanent;
    }
    #HTTP_TO_HTTPS_END
    ssl_certificate    in.pem;
    ssl_certificate_key     ey.pem;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000";
    error_page 497  https://$host$request_uri;

    #SSL-END
    
    #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
    #error_page 404 /404.html;
    #error_page 502 /502.html;
    #ERROR-PAGE-END
    
    #PHP-INFO-START  PHP引用配置,可以注释或修改
    include enable-php-72.conf;
    #PHP-INFO-END
    
    #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
    include  eet.com.conf;
    #REWRITE-END
    
    #禁止访问的文件或目录
    location ~ ^/(.user.ini|.htaccess|.git|.svn|.project|LICENSE|README.md)
    {
        return 404;
    }
    
    #一键申请SSL证书验证目录相关设置
    location ~ .well-known{
        allow all;
    }
    
    location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        error_log /dev/null;
        access_log off;
    }
    
    location ~ .*.(js|css)?$
    {
        expires      12h;
        error_log /dev/null;
        access_log off; 
    }
    
    
     location ~ .*.(php|php5)?$
        {
               #fastcgi_pass  127.0.0.1:9001;
                fastcgi_pass  unix:/tmp/php-cgi.sock;
                fastcgi_index index.php;
                include fastcgi.conf;
        }
 
    
    
    
  #wss协议转发
	location /wss {
        proxy_pass  et.com:448;
        #代理到上面的地址去,
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }
    
    
    access_log  et.com.log;
    error_log  et.com.error.log;
}

欢迎 各位 前来交流 疑难杂症

在这里插入图片描述

有的公司 用 GatewayWorker

同理

http://www.workerman.net/download/GatewayWorker.zip

nginx 配置不用变
ssl 启动就ok
在这里插入图片描述
同时注意 策略组 和 安全防火墙
在这里插入图片描述

在这里插入图片描述

 // 心跳间隔  长链接加心跳要不然会被KO
$gateway->pingInterval = 10;
// 心跳数据
//$gateway->pingData = '{"type":"ping"}';

 $gateway->pingData = '{"event":"ping","time":'.time().'}';

 ini_set('display_errors', 'on');
use WorkermanWorker;

if(strpos(strtolower(PHP_OS), 'win') === 0)
{
    exit("start.php not support windows, please use start_for_win.batn");
}

// 检查扩展
if(!extension_loaded('pcntl'))
{
    exit("Please install pcntl extension. See http://doc3.workerman.net/appendices/install-extension.htmln");
}

if(!extension_loaded('posix'))
{
    exit("Please install posix extension. See http://doc3.workerman.net/appendices/install-extension.htmln");
}

// 标记是全局启动
define('GLOBAL_START', 1);

require_once __DIR__ . '/../GatewayWorker/vendor/autoload.php';

// 加载所有Applications/*/start.php,以便启动所有服务
foreach(glob(__DIR__.'/../GatewayWorker/Applications/*/start*.php') as $start_file)
{
    require_once $start_file;
}
// 运行所有服务
Worker::runAll();

在这里插入图片描述
根目录 启动文件

 // 证书是会检查域名的,请使用域名连接
ws = new WebSocket("wss://域名/wss");
ws.Onopen= function() {
    alert("连接成功");
    ws.send('tom');
    alert("给服务端发送一个字符串:tom");
};
ws.Onmessage= function(e) {
    alert("收到服务端的消息:" + e.data);
};

QQ 1274510382
Wechat JNZ_aming
商业联盟 QQ群538250800
技术搞事 QQ群599020441
解决方案 QQ群152889761
加入我们 QQ群649347320
共享学习 QQ群674240731
纪年科技aming

网络安全 ,深度学习,嵌入式,机器强化,生物智能,生命科学。

叮叮叮:产品已上线 —>关注 官方-微信公众号——济南纪年信息科技有限公司
民生项目:商城加盟/娱乐交友/创业商圈/外包兼职开发-项目发布/
安全项目:态势感知防御系统/内网巡查系统
云服项目:动态扩容云主机/域名/弹性存储-数据库-云盘/API-AIeverthing
产品咨询/服务售后(同)

纸上得来终觉浅,绝知此事要躬行 !!!
寻找志同道合伙伴创业中。。。抱团滴滴aming联系方式!!


#本文为广告系统自动投放广告

# 如有侵权 删改 请速速联系我们


推荐阅读
  • 微信民众号商城/小顺序商城开源项目介绍及使用教程
    本文介绍了一个基于WeiPHP5.0开发的微信民众号商城/小顺序商城的开源项目,包括前端和后端的目录结构,以及所使用的技术栈。同时提供了项目的运行和打包方法,并分享了一些调试和开发经验。最后还附上了在线预览和GitHub商城源码的链接,以及加入前端交流QQ群的方式。 ... [详细]
  • 导读:很多朋友问到关于入门学什么php框架简单的相关问题,本文编程笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!本文目录一览: ... [详细]
  • Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理,现在在企业中的使用率也是很广的。git是一个分布式的版本控制系统,不像以前的svn,svn是 ... [详细]
  • 使用pm2方便开启node集群模式
    使用pm2方便开启node集群模式 ... [详细]
  • 看完这篇还搞不懂HTTPS,就来找我!
    本文将为大家详细梳理一下H ... [详细]
  • “近年来最大计算机漏洞”被中国程序员发现!
    头条中国程序员,计算机漏洞头条(观察者网讯)据美联社12月11日报道,中国阿里云安全团队在Web服务器软件阿帕奇(Apache)下的开源日志组件Log4j内,发现一个漏洞Log4S ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • predis与phpredisredis官方推荐的php客户端是predis和phpredis。前者是完全使用php代码实现的原生客户端,后者则是用c编写的php拓展 ... [详细]
  • 如何通过swoole加速laravel的问题?
    这篇文章主要介绍了关于如何使用swoole加速laravel,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下再来复习一下吧,导致php慢的各种因素中解析性语言的 ... [详细]
  • ThinkPHP视频教程第二十五集:关联模型
    php教程|php手册thinkphp代码,代码示例,代码参考,php短信,数据库备份代码,令牌验证,去除代码中的空白和注释Thinkphpphp教程-php手册对学习Thinkp ... [详细]
  • syncd是一款开源的代码部署工具,它具有简单、高效、易用等特点,可以提高团队的工作效率. ... [详细]
  • 拖拽验证:简单、便捷、安全
    最近看到一些拖拽验证码的帖子,本着好奇和研究学习的态度简单实现了第一版的拖拽验证项目地址:github.comRLOFLSdrag-captcha示例逻辑:apiphpDragge ... [详细]
  • laravel 使用腾讯云 COS5全教程
    laravel使用腾讯云COS5全教程一下载首先第一步肯定是用composer把包安装下来,这里是laravel5.8版本的,所以我用的是cos5 ... [详细]
  • 一般的网页我的项目能够很容易的实现换肤性能,能够通过js扭转link元素中引入的css主题款式链接。然而微信小程序不能动静扭转wxss文件,所以须要其余的计划来实现。 ... [详细]
  • 【前端工具】nodejs+npm+vue 安装(windows)
    预备先看看这几个是干嘛的,相互的关系是啥。nodejs是语言,类比到php。npm是个包管理,类比到composer。vue是个框架&# ... [详细]
author-avatar
溪流-ju_506
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有