thinkphp5+workerman搭建微信小程序socket后台,建立自己的聊天室

论坛 期权论坛 脚本     
匿名技术用户   2021-1-2 07:26   194   0

1、下载安装tp5

这一步就不详细说了,比较简单,直接看TP文档吧

2、通过composer,为tp5集成workermantp

官方真不错,提供了workerman的集成方法,通过composer一键安装,详细内容见tp官方的github

3、写应用,先让workerman在tp中跑起来(直接应用tp官方内容)

首先创建控制器类并继承 think\worker\Server,然后设置属性和添加回调方法

namespace app\index\controller;
use think\worker\Server;
class Worker extends Server
{
    protected $socket = 'ws://0.0.0.0:2346';
    public function onMessage($connection,$data)
    {
        //这里写具体的逻辑
        $connection->send($data);
    }
}

支持workerman(具体用法请看workerman文档)所有的回调方法定义(回调方法必须是public类型)
在应用根目录增加入口文件 server.php

#!/usr/bin/env php
< ?php
define('APP_PATH', __DIR__ . '/application/');
define('BIND_MODULE','index/Worker');
// 加载框架引导文件
require __DIR__ . '/thinkphp/start.php';
<!--?php
define('APP_PATH', __DIR__ . '/application/');
define('BIND_MODULE','index/Worker');
// 加载框架引导文件
require __DIR__ . '/thinkphp/start.php';

在命令行启动服务

php server.php start

linux下面可以支持下面指令

php server.php start|stop|status|restart|reload

打开chrome浏览器,按F12打开调试控制台,在Console一栏输入(或者把下面代码放入到html页面用js运行)

// 假设服务端ip为127.0.0.1
ws = new WebSocket("ws://127.0.0.1:2346");
ws.onopen = function() {
    alert("连接成功");
    ws.send('tom');
    alert("给服务端发送一个字符串:tom");
};
ws.onmessage = function(e) {
    alert("收到服务端的消息:" + e.data);
};

可以看到返回说明搭建成功

4、重点来了,就是让ws变成wss,这也是最头疼的问题,需要使用nginx代理

首先,需要为你需要访问的域名申请SSL,这里是通过Nginx的反向代理实现功能,具体配置如下:

upstream websocket {
    # 填写workerman中websocket监听的端口
    server 127.0.0.1:2346;
}

server {
    # 填写外部wss连接端口,不冲突即可
    listen 8282;
    ssl on;
    server_name test.painchina.com;
    ssl_certificate      key/key.csr;
    ssl_certificate_key  key/key.key;
    ssl_session_timeout 5m;
    ssl_session_cache shared:SSL:50m;
    ssl_protocols SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    location / {
        proxy_pass http://websocket;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }
}

(1)把test.painchina.com换成你自己的访问域名
(2)把key.csr和key.key修改为你自己的SSL证书内容

5、搭建成功,访问试试

根据上面这个配置,访问地址为wss://test.painchina.com:8282

注意:微信小程序的sock链接不能带端口的,默认端口是443,带端口连接会出现开发工具、预览版正常,体验版和正式版错误

转载于:https://my.oschina.net/bibo/blog/1498974

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP