請(qǐng)教幾個(gè)問(wèn)題
我使用的是最新下載的2.0 gateway worker版本
在Applications\XXX\Event.php寫(xiě)入代碼
我想在客戶端onConnect后,發(fā)送一次命令獲取uid,然后使用綁定想這個(gè)客戶端定時(shí)發(fā)送數(shù)據(jù),定時(shí)發(fā)送的命令基本是一樣的。最后在onMessage接收處理。
1.是使用while循環(huán)還有sleep定時(shí)發(fā)送數(shù)據(jù)還是使用定時(shí)器Timer?這兩種效果一樣嗎?
使用定時(shí)器在timer中發(fā)送數(shù)據(jù)Gateway::sendToCurrentClient('READ ID'); 為什么接收不到?
如果定時(shí)發(fā)送的數(shù)據(jù)太快,客戶端在接收命令后會(huì)一次執(zhí)行嗎,會(huì)不會(huì)引起什么后果?
1、使用Timer。不能使用while循環(huán)還有sleep,會(huì)導(dǎo)致這個(gè)進(jìn)程無(wú)法接收處理其它請(qǐng)求,也就是無(wú)法觸發(fā)onMessage。
2、定時(shí)器是異步的,sendToCurrentClient是向當(dāng)前用戶發(fā)送數(shù)據(jù),異步環(huán)境無(wú)法知道當(dāng)前的用戶是誰(shuí),所以無(wú)法發(fā)送。使用sendToClient發(fā)送指定client_id即可,定時(shí)器是可以指定參數(shù)的,手冊(cè)中有很多定時(shí)器的例子可以參考下
3、速度太快,客戶端是否一次全部執(zhí)行主要看客戶端是怎么實(shí)現(xiàn)的,后果也和業(yè)務(wù)有關(guān),不能一概而論