如何在websocket的基础上自定义协议?

zhouciming

这个框架提供的自定义协议非常好用,但应该是在tcp基础上的自定义协议吧!
 
我现在的实际应用场景是想在websocket基础上再添加自定义的二进制协议,所以在Protocols下自定义协议已经无效了,不知道有没有简便的方式实现我的这种需求呢?

4883 1 0
1个回答

six

在websocket协议基础上包装一层就好了吧

class MyWebSocket{
    public static function input($buffer, $connection) {
         return Websocket::input($buffer, $connection);
    }

    public static function encode($data, $connection) {
        $buffer = WebSockt::encode($data, $connection);
        return your_encode($buffer);
    }

    public static function decode($buffer, $connection) {
        $data = Websocket::decode($buffer, $connection);
        return your_decode($data);
    }
}
  • zhouciming 2018-10-13

    真想给你一万个赞, 非常简洁明了, 正是我想要的, 太感谢了!

  • zhouciming 2018-10-15

    我实际应用了下,发现你这个示例有不合适的地方,不知道对不对,你看看!

    1. encode接口,应该是先my_encode($data), 再调用Websocket::encode(),你觉得呢?
    2. input接口,那样写似乎有问题,我实际跑的时候,接收端未收到数据, 因为调用Websocket::encode()后,返回的数据变为''了!
  • six 2018-10-15

    encode应该先your_encode($buffer),再WebSocket::encode

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