tp5配置workerman与小程序建立socket链接

1.在tp5中安装workerman

1-安装workerman

首先通过 composer 安装

composer require topthink/think-worker
如果报错:

Installation failed, reverting ./composer.json to its original cont

则使用

composer require topthink/think-worker=1.0.*
如果需要在window下做服务端,还需要

composer require workerman/workerman-for-win

2.配置运行环境

在tp5根目录新建server.php(名称随意)
添加内容如下:

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

application文件夹下新建push文件夹
push文件夹下新建controller文件夹
controller文件夹下新建Worker.php内容如下:

<?php

namespace app\push\controller;

use think\worker\Server;

class Worker extends Server {


    protected $socket = 'websocket://127.0.0.1:(安全组内的端口)';//安全组内的端口指的是服务器安全策略开放的通信端口,使用此端口可以通信,安全组外的端口会导致通信失败。

    /**
     * 收到信息
     * @param $connection
     * @param $data
     */
    public function onMessage($connection, $data) {
        $connection->send('我收到你的信息了,服务器上的信息123');
    }

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

    /**
     * 当连接断开时触发的回调函数
     * @param $connection
     */
    public function onClose($connection) {
        
    }

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

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

在根目录运行cmd 输入php server.php(与上面新建的根目录文件一样的名字) start

3.配置wss与小程序通信

已经申请了ssl证书,并且配置ssl安全协议 ,利用apache转发443端口至指定端口(你在work.php写的安全组内的端口)
apache配置文件httpd-ssl.conf文件修改:

VirtualHost内添加
SSLProxyEngine on
ProxyRequests Off
ProxyPass /wss ws://127.0.0.1:监听端口号(此端口号必须在服务器安全组内)
ProxyPassReverse /wss ws://127.0.0.1:监听端口号(此端口号必须在服务器安全组内)
在文件内添加(搜索有的替换)
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
打开httpd.conf中的相应模块
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

注意,小程序端:

// pages/worktest/worktest.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {

    wx.connectSocket({
      url: 'wss://你的服务器地址/wss',//wss就是刚才在httpd-ssl.conf配置好的访问路径
    });

    wx.onSocketOpen(function(res) {
      console.log("连接成功");

      wx.sendSocketMessage(this.data);
      console.log("给服务端发送一个字符串:tom");
    });

    wx.onSocketMessage(function(res) {
      console.log("收到服务端的消息:" + res.data);
    });
    // wx.sendSocketMessage({
    //   // data: msg
    // })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function() {

  }
})

2019年3月20日10:51:11 宋汲晨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值