V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LiuXuFei
V2EX  ›  PHP

有什么合适的包能接收 json-rpc 的异步推送吗?

  •  
  •   LiuXuFei · 2017-10-23 17:25:55 +08:00 · 3406 次点击
    这是一个创建于 2581 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有个 json-rpc 的订阅异步获取,用 wscat 命令行获取如下:

    $ wscat -c ws://localhost:1234
    connected (press CTRL+C to quit)
    > {"id":1, "method":"call", "params":[0,"set_callback",[1]]}
    < {"id":1,"jsonrpc":"2.0","result":null}
    < {"method":"notice","params":[1,["001492b724a04d5871e1a4f387b2d1933ca31ce4"]]}
    < {"method":"notice","params":[1,["001492b8a0e5b3ab604e1f735a2bd9d4f43379d8"]]}
    < {"method":"notice","params":[1,["001492b91e6c600dfca3c906b29128bafc9d9c40"]]}
    < {"method":"notice","params":[1,["001492ba18d2a0fb63482964b5f5614283cb2459"]]}
    < {"method":"notice","params":[1,["001492bb45725b1ae8adad2fe1a063d04982d8c8"]]}
    >
    

    有哪些库、方法、程序实例可以订阅等待获取的这些数据,再传与 laravel 做处理,再输出的?

    5 条回复    2017-10-26 10:41:59 +08:00
    xzem
        1
    xzem  
       2017-10-23 18:00:49 +08:00 via Android
    这个是 websocket 吗?
    ywisax
        2
    ywisax  
       2017-10-23 18:07:48 +08:00
    长连接上就 OK 了吧。连接上监听数据,遇到指定数据就直接 http 转发个 lara 就是了
    非要跟 php 实现的话,就用 workerman 的 AsyncTcpConnection 可以实现
    qiujin
        3
    qiujin  
       2017-10-23 18:27:55 +08:00
    问题重点是 websocket,首先需要个 websocket client 吧。

    用 PHP 写过 jsonrpc 的应用服务,使用通知回调方法也可以实现类似需求,http://www.phpegg.com/doc/app-jsonrpc.html
    LiuXuFei
        4
    LiuXuFei  
    OP
       2017-10-23 18:59:59 +08:00
    workerman 和 swoole 都应该有方式,只是不知道怎么 post 数据:{"id":1, "method":"call", "params":[0,"set_callback",[1]]},没有看到相应的例子。
    haierspi
        5
    haierspi  
       2017-10-26 10:41:59 +08:00
    推荐 你看下 swoole ....
    长连接 就要让 php 以服务的方式(长期运行)运行...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1956 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:33 · PVG 08:33 · LAX 16:33 · JFK 19:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.