*socket后端程序采用GatewayWorker框架(开发手册:http://doc4.workerman.net/642185

前端配置socket配置

在全局配置(根目录/config/index.js)中配置相关sokect接口地址
路径:根目录/config/index.js

  1. eg: 请更换自己的域名和端口号
  2. const LIVESOKECT = 'wss://xxxx:8273/';
  3. 域名:xxxx
  4. 端口号:8273

前端使用说明

  1. # /根目录/utils/im.js 基于uni-app封装,有断线重连、心跳检测、发送消息等功能
  2. # /根目录/utils/index.js EventEmitter类,事件订阅类,用户全局监听消息事件、发布消息事件
  3. import IM from '@/utils/im'
  4. Vue.prototype.$IM = new IM()
  5. // 链接初始化
  6. this.$IM.imInit()
  7. // 断线重连
  8. this.$IM.manualReconnect()
  9. // 监听消息,在App页面监听webscoket消息,在通过事件订阅模式对订阅消息事件的页面实时推送消息
  10. // App.vue
  11. uni.onSocketMessage(res => {
  12. const e = JSON.parse(res.data)
  13. if (e.type !== 'pong') {
  14. this.$eventEmitter.emit('msg', e)
  15. }
  16. })
  17. // 监听消息页面
  18. this.$eventEmitter.on('msg', e => {
  19. if (e.type === 'say') {
  20. // 业务逻辑
  21. }
  22. })
  23. // 发送消息
  24. uni.sendSocketMessage({
  25. data: JSON.stringify({
  26. })
  27. })
  28. // 断开链接
  29. this.$IM.close()

后端使用说明

  1. ### 文件路径
  2. 站点根目录/im/
  3. ### SSL证书配置
  4. **socket默认启用SSL证书配置,**文件位置:根目录/im/Applications/Front/start_gateway.php
  5. ```php
  6. $context = array(
  7. 'ssl' => array(
  8. 'local_cert' => '/项目地址/ssl/full_chain.pem',
  9. 'local_pk' => '/项目地址/ssl/private.key',
  10. 'verify_peer' => false,
  11. )
  12. );

Socket数据库配置

修改数据库配置:根目录/im/Applications/Front/Events.php 2.png

PHP设置

服务器端PHP版本必须解禁函数:pcntl_signal、pcntl_signal_dispatch、pcntl_fork、pcntl_wait、pcntl_alarm 3.png PHP安装Redis扩展 4.png

安装Redis

**服务器安装Redis(端口默认设置为:6379) 5.png

放行端口

服务器安全组和宝塔面板都要放行端口:8273

启动socket服务

启动命令(守护进程模式):

生产环境使用守护进程模式

  1. php /网站目录/im/start.php restart -d

启动命令(调试模式):

开发环境使用调试模式 代码中echo、var_dump、print等打印函数会直接输出在终端; 异常信息会直接输出在终端;

  1. php /网站目录/im/start.php restart

*建议:在宝塔面板-计划任务,创建一个任务 启动socket脚本.png