實(shí)例一個Gateway,用text協(xié)議,在代碼里用stream_socket_client去連接,連接成功,但發(fā)不出消息,也不報錯不超時。但如果用命令行Telnet去連接并發(fā)送,一切正常。請問這是什么情況?
text協(xié)議有特定格式的,需要在請求后面加一個換行符,代表一個完整的數(shù)據(jù)包,如果gateway是text協(xié)議,數(shù)據(jù)流里沒找到換行符,那么就認(rèn)為這個包不完整,就一直等啊等,不會觸發(fā)onMessage,感覺像是沒收到消息一樣,實(shí)際上是收到了的
telnet 會車的時候是會加個換行符然后發(fā)給gateway的,所以沒問題
曾經(jīng)邁過此坑,希望能幫到你
正如 @damao 所說,由于客戶端數(shù)據(jù)包不符合text協(xié)議規(guī)定,Protocol::input() 檢測包長總是返回0,表現(xiàn)為wokerman服務(wù)端無限等待直至應(yīng)用層接收緩沖區(qū)長度超過默認(rèn)最大包長度,連接斷開,無論表現(xiàn)為哪種情況,最終都無法觸發(fā) onMessage 回調(diào)。