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

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

左補(bǔ)闕

用tp6+worker,tcp連接,要保持長連接。用的是tp6開發(fā)手冊(cè)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ù)器和客戶端保持一段時(shí)間的長連接。
實(shí)際結(jié)果是:telnet連接,只互相傳遞一次消息,接到服務(wù)器消息返回后,就斷了,closed by foreign host。

期待長連接,我看workman的視頻教程,也是簡(jiǎn)單的代碼,沒加onclose是不會(huì)斷開的。初接觸workman,不知問題在哪。請(qǐng)指教,謝謝。

5209 4 0
4個(gè)回答

xiuwang

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

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

改成

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

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

  • 左補(bǔ)闕 2021-06-22

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

xiuwang

debug方式運(yùn)行看下是不是有報(bào)錯(cuò)。
如果不行就直接用workerman試下,排除tp問題。

2548a

兩邊的代碼都完整貼出來,代碼正常不會(huì)這樣的,這種99%還是你代碼問題,還有,有可能是因?yàn)槟隳倪厛?bào)錯(cuò)重啟導(dǎo)致斷開了

左補(bǔ)闕

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

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

  • 暫無評(píng)論
年代過于久遠(yuǎn),無法發(fā)表回答
??