国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

使用tp6手冊workerman代碼,客戶端和服務(wù)器連接一次后斷開,closed by foreign host

左補闕

用tp6+worker,tcp連接,要保持長連接。用的是tp6開發(fā)手冊workerman一節(jié)的代碼。
<?php
namespace app\http;

use think\worker\Server;

class Worker extends Server
{
protected $socket = 'http://0.0.0.0:2346'; (此處我已經(jīng)改成tcp協(xié)議tcp://0.0.0.0:2345)

public function onMessage($connection,$data)
{
    $connection->send(json_encode($data));
}

}

客戶端用xshell,
期待結(jié)果的是telnet連接后,服務(wù)器和客戶端保持一段時間的長連接。
實際結(jié)果是:telnet連接,只互相傳遞一次消息,接到服務(wù)器消息返回后,就斷了,closed by foreign host。

期待長連接,我看workman的視頻教程,也是簡單的代碼,沒加onclose是不會斷開的。初接觸workman,不知問題在哪。請指教,謝謝。

5343 4 0
4個回答

xiuwang

你開的是http協(xié)議的端口,然后用telnet訪問,發(fā)送的數(shù)據(jù)不符合http協(xié)議格式,估計算是非法數(shù)據(jù)格式,所以連接斷開了。

protected $socket = 'http://0.0.0.0:2346';

改成

protected $socket = 'tcp://0.0.0.0:2346';

試下。
也就是用tcp協(xié)議

  • 左補闕 2021-06-22

    不好意思,剛才是我疏忽,沒有說到這個。我發(fā)帖前已經(jīng)像你說的,改成tcp協(xié)議的了。我的目的也是使用tcp協(xié)議的。就是這個連接會斷。數(shù)據(jù)能正常的在服務(wù)器和客戶端傳遞的。

xiuwang

debug方式運行看下是不是有報錯。
如果不行就直接用workerman試下,排除tp問題。

2548a

兩邊的代碼都完整貼出來,代碼正常不會這樣的,這種99%還是你代碼問題,還有,有可能是因為你哪邊報錯重啟導致斷開了

左補闕

問題終于搞定。操作步驟如下:
1.直接搭建一個純workman項目,運行,沒問題;
2.搭建一個新的tp+worker項目,運行,出現(xiàn)問題,還是closed by foreign host;
這時開始懷疑是php版本和tp的兼容問題,因為我linux默認用的是php8.0。用小皮面板+tp項目,如果選擇php8版本也是運行不起來的。
3.把我linux的默認php版本8.0卸載,裝回7.4.
4 重啟,終于運行成功。

具體原因不清楚,也沒改什么代碼。確實是搞定了。謝謝協(xié)助的大佬,xiuwang,2548a。

  • 暫無評論
年代過于久遠,無法發(fā)表回答
??