php 后台发送消息失败

markoqiu

实例一个Gateway,用text协议,在代码里用stream_socket_client去连接,连接成功,但发不出消息,也不报错不超时。但如果用命令行Telnet去连接并发送,一切正常。请问这是什么情况?

3142 2 0
2个回答

damao

text协议有特定格式的,需要在请求后面加一个换行符,代表一个完整的数据包,如果gateway是text协议,数据流里没找到换行符,那么就认为这个包不完整,就一直等啊等,不会触发onMessage,感觉像是没收到消息一样,实际上是收到了的

telnet 会车的时候是会加个换行符然后发给gateway的,所以没问题

曾经迈过此坑,希望能帮到你

  • 暂无评论
phpcreeper

正如 @damao 所说,由于客户端数据包不符合text协议规定,Protocol::input() 检测包长总是返回0,表现为wokerman服务端无限等待直至应用层接收缓冲区长度超过默认最大包长度,连接断开,无论表现为哪种情况,最终都无法触发 onMessage 回调。

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