多协议发送问题

bijingjieshen

后端采用gatewayworker框架,里面有两个协议一个是json协议,一个是text协议,两个协议采用不同的端口号分别为8088和8099。现在有这样一个场景:
当8088接收到数据后,我想发给正在监听8099的那个客户端,但是会出现一个问题。发送的数据协议为json,可是8099那个端口是text协议解析的。请问这个情况应该怎么办?

2901 6 0
6个回答

walkor

协议对于业务是透明的,直接send即可,给text端口发送数据时框架会自动用text协议发。

  • 暂无评论
bijingjieshen

哦哦,我懂您的意思了。就是sendToClient和sendToCurrentClient这两个发送函数会从协议的encode中进行打包,是这个意思吗?
但是我还是不懂这个send应该要怎么写?如何获得这个链接的描述符?

  • 暂无评论
bijingjieshen

我看到clientIdToAddress这个函数了,能把client_id转换成local_ip,local_port,和connection_id。这个connection_id是不是就是socket描述符呢?

  • 暂无评论
walkor

不用去管里面的实现。会用接口就行。
一般客户端链接上来后要发一个登录验证包的,Events.php里根据验证信息得到用户uid,然后Gateway::bindUid($client_id, $uid);,之后就可以通过Gateway::sendToUid($uid, $message)给这个用户发数据了

  • 暂无评论
bijingjieshen

给text端口发的数据时,正常调用接口会返回给客户端text协议数据,可是我想让他返回json协议数据

  • 暂无评论
walkor

把数据转成json发过去就行了。

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