同一个workman下的不同application如何通信

luckythc

在workerman的application中部署两个项目,其中一个采用gateway方式实现即时聊天功能,另一个采用worker方式实现其他附加业务,现在的问题是:如何从附加业务中向聊天的某个客户端发送消息?

3462 3 0
3个回答

walkor 打赏

有几种方法,可以参考手册
http://doc3.workerman.net/advanced/push.html

  • 暂无评论
luckythc

我看过了这份文档了,也是按照第一种方法做的,worker方式的项目中的发送没有问题,但是gateway这边的项目没有看到数据包过来,不知道怎么回事,是不是接收端还要做什么?
worker项目Store.php

<?php 
namespace Config;

/**
 * 存储配置
 * 注意生产环境使用$driver = self::DRIVER_MC,具体参考applications/Demo/README.md
 * @author walkor
 */
class Store
{
    // 使用文件存储,注意使用文件存储无法支持workerman分布式部署
    const DRIVER_FILE = 1;
    // 使用memcache存储,支持workerman分布式部署
    const DRIVER_MC = 2;

    /* 使用哪种存储驱动 文件存储DRIVER_FILE 或者 memcache存储DRIVER_MC,为了更好的性能请使用DRIVER_MC
     * 注意: DRIVER_FILE只适合开发环境,生产环境或者压测请使用DRIVER_MC,需要php cli 安装memcache扩展
     */
    public static $driver = self::DRIVER_FILE;

    // 如果是memcache存储,则在这里设置memcache的ip端口,注意确保你安装了memcache扩展
    public static $gateway = array(
        '127.0.0.1:22322',
    );

    /* 
     * 如果使用文件存储,默认系统临时目录下
     */
    public static $storePath = '';
}

// 默认系统临时目录下
Store::$storePath = sys_get_temp_dir().'/fdzn-server-push/';

发送代码

Gateway::sendToAll( str_pad($len, 10, '0', STR_PAD_LEFT) . json_encode($lbs_message), array(0=>$clientId) );
  • 暂无评论
walkor 打赏

按照手册来就可以

  • 暂无评论
年代过于久远,无法发表回答
×
🔝