请问下大大 有做过类似淘宝推送消息处理的案例呢?

641221621

目前是这样的 我想建立长连接 接受淘宝推送过来的消息 进行处理。

淘宝只给出了C# 跟 java 的 代码

这是C# 的代码 如下:

TmcClient client =   new  TmcClient(  "appkey"  ,   "appsecret"  ,   "default"  );   // 关于default参考消息分组说明
client.OnMessage += (s, e) =>
{
      try
      {
          Console.WriteLine(e.Message.Topic);
          Console.WriteLine(e.Message.Content);
          // 默认不抛出异常则认为消息处理成功
      }
      catch  (Exception exp)
      {
          Console.WriteLine(exp.StackTrace);
          e.Fail();   // 消息处理失败回滚,服务端需要重发
      }
};
client.Connect(  "ws://mc.api.taobao.com/"  ); // 消息环境地址
  • 请问 如果用 workerman 写的话 应该怎么写呢???? 有类似的例子吗?

5681 2 0
2个回答

641221621

因为我看官方文档里面

<?php
use Workerman\Worker;
require_once './Workerman/Autoloader.php';

// 创建一个Worker监听2346端口,使用websocket协议通讯
$ws_worker = new Worker("websocket://0.0.0.0:2346");

// 启动4个进程对外提供服务
$ws_worker->count = 4;

// 当收到客户端发来的数据后返回hello $data给客户端
$ws_worker->onMessage = function($connection, $data)
{
    // 向客户端发送hello $data
    $connection->send('hello ' . $data);
};

// 运行worker
Worker::runAll();

这是使用WebSocket协议对外提供服务 有没有可以监听 不如淘宝的 ws://mc.api.taobao.com/

这个链接的方法了 只要那边又数据推送 这边来业务处理数据!

  • 暂无评论
walkor

需要用php写一个能解析websocket客户端协议的类。
把workerman当做客户端来主动向ws://mc.api.taobao.com/ 发起连接,并接收数据。Workerman代码类似如下

use Workerman\Worker;
use Workerman\Connection\AsyncTcpConnection;
require_once './Workerman/Autoloader.php';

$ws_worker = new Worker();
$ws_worker->onWorkerStart = function($ws_worker)
{
    $con_to_taobao = new AsyncTcpConnection('tcp://mc.api.taobao.com:80');
    $con_to_taobao->onMessage = function($con_to_taobao, $buffer)
    {
        // $buffer是淘宝发来的数据,数据是websocket协议的,
        // 有个websocket头,会是乱码,要自己按照客户端websocket协议解析
    };
    $con_to_taobao->connect();
};
Worker::runAll();

AsyncTcpConnection异步连接通讯见手册说明
http://doc3.workerman.net/worker-development/__construct.html

年代过于久远,无法发表回答
🔝