各位大神好。
我的功能需求是:后臺(tái)主動(dòng)像前端js推送動(dòng)態(tài)(例如你被贊了,評(píng)論了這些)。
本來(lái)是用ajax長(zhǎng)輪詢了,但是中間遇到了點(diǎn)問(wèn)題(session鎖沖突,我在TP框架下怎么也無(wú)法解決這個(gè)問(wèn)題)并且考慮到長(zhǎng)輪詢效率也不怎么高,就想到用websocket,最終采用workerman。
從下午弄到現(xiàn)在總算摸清楚workerman了,但是我現(xiàn)在遇到一個(gè)問(wèn)題,就是workman好像無(wú)法主動(dòng)往客戶端推送消息?有一個(gè)onmessage但是也要客戶端主動(dòng)發(fā)起啊,這樣的話和長(zhǎng)輪詢一樣了。
到底有木有一個(gè)方法是專門提供主動(dòng)推送消息的呢?
http://wenda.workerman.net/?/question/508 我看了這篇文章,貌似是不能用http請(qǐng)求(必須先請(qǐng)求),而是用tcp請(qǐng)求(服務(wù)器可以主動(dòng)推客戶端)。但是他里面的代碼和我的需求好像不是很一樣,我不知道怎么調(diào)試。
大神們可以給些建議嗎?在線等,急
你的需求和 http://wenda.workerman.net/?/question/508 實(shí)現(xiàn)方法上是一樣的,直接用就行。
我不太理解后端推送代碼和后端代碼的區(qū)別,是不是說(shuō)一個(gè)用來(lái)啟動(dòng)服務(wù),再用一個(gè)方法監(jiān)聽然后實(shí)時(shí)推送?
為何要一直輸出,不是點(diǎn)贊或者評(píng)論類的才推送么?點(diǎn)贊或者評(píng)論時(shí)調(diào)用stream_socket_client那段代碼推送就好了。如果要一直輸出,可以用定時(shí)器。
@1:我要實(shí)現(xiàn)的效果確實(shí)是點(diǎn)贊或者評(píng)論才推送(也就是說(shuō)我不需要像輪詢那樣一直while(true)是嗎) 但是我ajax評(píng)論或者點(diǎn)贊的時(shí)候,瀏覽器走的是http協(xié)議,壓根無(wú)法調(diào)用5678那段tcp協(xié)議的代碼???
那我如何處理呢
假設(shè)處理評(píng)論的url是http://xxxx.com/?module=comment&action=save
把那段插入到處理這個(gè)url的代碼里面。
@1:進(jìn)程數(shù)只能為1嗎?你在 http://wenda.workerman.net/?/question/508 的解釋我有些不懂,count只能為1?有沒(méi)辦法增加?1的話會(huì)不會(huì)影響效率呀??
@1:好的對(duì)我來(lái)說(shuō)也足夠了,但我現(xiàn)在有個(gè)疑問(wèn),我如何判斷每個(gè)用戶的用戶id呢?那個(gè)uid是要設(shè)置成死的嗎?還是動(dòng)態(tài)設(shè)置成用戶id呢?
@1:大神你好,正常的業(yè)務(wù)邏輯我已經(jīng)弄出來(lái)了,但現(xiàn)在有一個(gè)問(wèn)題。就是如果我開啟了N個(gè)頁(yè)面的話(同一個(gè)賬號(hào)),每次后臺(tái)推送評(píng)論,消息那些,只能到一個(gè)頁(yè)面上(到的是最后打開的那個(gè)頁(yè)面,這個(gè)問(wèn)題如何解決呢??
@1:它是推送到一個(gè)頁(yè)面上,我如何改呀...設(shè)一個(gè)循環(huán)值循環(huán)嗎?還是怎么樣,這是最后一個(gè)問(wèn)題,希望大神幫下我,昨天忙到現(xiàn)在,我把這個(gè)功能做完就去給您捐贈(zèng),自學(xué)編程的學(xué)生黨遇到問(wèn)題真鬧心
@1:主要是我他不能同時(shí)推送到多個(gè)頁(yè)面,但是我發(fā)現(xiàn)新浪微博是可以同時(shí)推送到多個(gè)頁(yè)面的,這讓我很困惑。
@1:我下次再用那個(gè)框架了(現(xiàn)在已經(jīng)做了差不多了如果亂改我怕出問(wèn)題),workman本身應(yīng)該支持自動(dòng)傳輸?shù)蕉鄠€(gè)頁(yè)面吧?還是說(shuō)要經(jīng)過(guò)特殊配置
@1:我雖然傳遞打開了是多個(gè)頁(yè)面,但我依然是同一個(gè)賬號(hào)的情況下啊?。ㄒ簿褪峭粋€(gè)給后端listen的uid)。這個(gè)應(yīng)該無(wú)法通過(guò)業(yè)務(wù)邏輯吧?
@1:我雖然打開了是多個(gè)頁(yè)面,但我依然是同一個(gè)賬號(hào)的情況下啊?。ㄒ簿褪峭粋€(gè)給后端listen的uid)。這個(gè)應(yīng)該無(wú)法通過(guò)業(yè)務(wù)邏輯吧?