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

swoole 如何实现 websocket 客户端的功能?

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

    workerman 的 websocket 客服端是这样实现的:(很简单,很容易就使用了,和前端差不多)

    http://doc.workerman.net/315306

    swoole 如何实现这样相同的功能呢?

    看了一下的一些文档,始终无法理解:

    https://github.com/matyhtf/framework/blob/master/libs/Swoole/Client/WebSocket.php

    https://wiki.swoole.com/wiki/page/p-http_client.html

    如果只是获取的话,比较简单:

    <?php
    $client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
    
    $client->on('connect', function($cli) {
        $cli->send("GET / HTTP/1.1\r\n\r\n");
    });
    $client->on('receive', function($cli, $data) {
        echo "Received: " . $data;
    });
    $client->on('error', function($cli) {
        echo "Connect failed\r\n\r\n";
    });
    $client->on('close', function($cli) {
        echo "Connection close\r\n\r\n";
    });
    
    $client->connect('xxx.xxx.xxx.xxx', 1234, true);
    
    

    但是我这里想要实现的是类似 workerman 那样的,可以一直连接。

    8 条回复    2017-11-24 13:55:41 +08:00
    owenliang
        1
    owenliang  
       2017-11-23 17:59:20 +08:00
    我给你的建议是用 Go。
    LiuXuFei
        3
    LiuXuFei  
    OP
       2017-11-23 18:18:36 +08:00
    @owenliang 现在是用 swoole 遇到问题,不是用其他的问题
    LiuXuFei
        4
    LiuXuFei  
    OP
       2017-11-23 18:19:28 +08:00
    @extreme 看过了,不大理解,不像 workerman 那么好理解,有像 workerman 类似的例子吗?
    GreatHumorist
        5
    GreatHumorist  
       2017-11-23 23:52:50 +08:00 via iPhone
    swoole 不是直接有 websocket server 吗
    BruceHong
        6
    BruceHong  
       2017-11-24 00:31:55 +08:00
    websocket 只是一个文本协议(和 http 差不多),原理就是 TCP 连接后通过 HTTP 101 upgrade 到 ws 协议,别太纠结具体实现。
    LiuXuFei
        7
    LiuXuFei  
    OP
       2017-11-24 08:31:21 +08:00 via Android
    @GreatHumorist 是要 swoole 做客户端的例子,不是服务端
    tanszhe
        8
    tanszhe  
       2017-11-24 13:55:41 +08:00
    你不关就一直连接啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2709 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 10:10 · PVG 18:10 · LAX 02:10 · JFK 05:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.