PHP適合做app即時通訊的服務端嗎?
來源:互聯網
上載者:User
最近想寫一個Adroid版的即時通訊app,剛好對PHP也會一些,想問下大家PHP適合做即時通訊的服務端嗎?有什麼優劣之處嗎?
回複內容:
swoole!不用解釋!!前段時間裸寫了一個
PHP部分基於Socket
iOS部分是用的SocketRocket
主要就是PHP監聽連接埠等待用戶端請求,並對請求做出相應的處理
用戶端則按照串連-登入-發送&接收訊息的模式來
1、用戶端請求串連,服務端給予該串連一個index,返回串連成功
2、用戶端檢測到串連成功後,發送身份資訊到服務端登入,若是資訊正確,服務端將該帳號資訊與串連index綁定,返回登入成功
3、用戶端對某一id帳號發送聊天資訊,服務端將該聊天資訊儲存到資料庫,同時檢索該接收方是否有與之對應的串連index,有則發送聊天資訊,接收方會監聽到該資訊並響應。如果不線上則push notification。同時也會返回傳送成功的資訊給發送方,以便確認發送成功。
用是能用,服務端經常掛掉,後來還是加RESTful後備方案。。。。哈哈,我們項目上就是用的GatewayWorker寫的聊天模組。等你實現了一個即時通訊的後端後,估計你也沒慾望寫即時通訊的app了,絕對是看見就吐的程度。
php即時通訊服務端可以採用workerman,是一個高效能的php socket伺服器架構。
在workerman 的基礎上又有GatewayWorker,TCP長連線應用程式架構,簡化你的工作量。
不過也就是個地基,還要你自己實現一大堆東西來建房子。
如果是為了研究的話,可以寫寫看。
如果你的中心是做出app來,還不如用這些bass服務。
例如:
環信-即時通訊雲領導者
LeanCloud
都有即時通訊服務提供,接入SDK調調方法就可以了,專心於自己的業務。
這些服務商都是有免費版本的,使用者少的話基本上不用收費。以我用php的情況來看,感覺輪詢問題不大,資料庫操作會是瓶頸,我沒做過只是覺得。我用第三方野狗做過感覺 還可以。必須workerman的GatewayWorker
支援多協議、分布式部署、熱更新
例子文檔非常全如果你要問能不能,答案是能。實際項目中合不合適要對比,要看項目資源,要看團隊的選型,還要看領導的心情。你這麼問,想必你肯定做過調研比如java,對它們各自的優勢有大致瞭解。
根據的經驗,我的答案是值得嘗試使用php!反正是你自己寫,也熟悉的,何不放開擼。php在訊息主動推送那裡應該不行
需要用戶端輪訓詢請求 檢測是否有新的訊息 請求伺服器端 然後伺服器端響應 因此app需要定時請求伺服器 時間的取捨不好做 短了代價太高 長了新訊息不及時
可以用一般的java socket就可以 發送udp包 原生socket幾句代碼就夠了 指定地址 指定連接埠 後台跑一個service監聽連接埠 伺服器端寫好相應的接受收
nodejs 對socket已經封裝了 通訊更好寫
我的回答可能還有一些錯誤 自己做過這些 不對的地方歡迎大家指正做出來了就合適,做不出來就不合適,有些事情吧,你不去做,我不去做,就沒人了,要知道,你我都不是個看客,而是時代的參與者絕對可以,而且很靠譜。最近使用PHP做了兩個聊天的項目,一個是APP,一個是H5。我用的是workerman的chat案例改寫的,文檔很充分,案例也比較多。