swoole 點對點發(fā)送消息推送

swoole+webSocket? 消息推送辕近,或則聊天室韵吨,實現。

先上代碼亏推,(上菜学赛。。吞杭。盏浇。)點對點,簡單(客戶發(fā)送芽狗,服務回復绢掰。)

點對所有,廣播

見圖所示:參數詳解

/** * 1.實例化? 對象 * $host? 127.0.0.1 (本機)? 外網:0.0.0.0 (ipv4的所有可訪問) * $port? 9501 (1024以下 需要root權限) * $mode? 運行模式? ? 1.SWOOLE_PROCESS? 多進程模式(默認)? 2.SWOOLE_BASE? 基本模式? ? (可選) * $sock_type 指定Socket的類型童擎,支持TCP滴劲、UDP、TCP6顾复、UDP6班挖、UnixSocket Stream/Dgram 6種? (可選) */// 注:【on 】和jquery類似

采用匿名函數? $ws ,$fd? 兩個形參? :$ws對象? ? $fd? 客戶端標識符(用戶id)

著重 注意:$fd,這是基于TCP的客戶端的唯一標識芯砸。在swoole官方文檔中萧芙,韓老大已經寫的很清楚了,

這個$fd假丧,

1.自增的

2.有限(max:1600萬)

3.可復用(但同一個server中双揪,不會重復)

(番外魚:有的人認為,有最大值包帚,且可復用渔期,這樣會限制服務。并且崇洋媚外,殊不知Linux最大支持連接數是64K,幾位65536疯趟,如果自己基于swoole寫的服務拘哨,真的達到了同時在線人數1600w+,并且單服務器信峻。那么宅静,什么話都別說,膜拜)

思考:服務怎么和實際業(yè)務完美的結合站欺,綁定,映射實現纤垂。

途徑:DB矾策,redis,memcache峭沦,apc贾虽,等等。

1.當客戶端發(fā)來請求吼鱼,并攜帶uid,或用戶名等(業(yè)務中的唯一標識)

2.建立連接時蓬豁,存入? ? ? ? ? ? ? 綁定,產生映射關系菇肃。? ?$fd1 ==? ?uid10086? ? ? ? ?$fd2 ==? ?uid10010

3.業(yè)務處理地粪,點對點發(fā)送,客戶端傳來琐谤。想要發(fā)送給B蟆技,B的uid,同時uid_B發(fā)來??,此時查找當前的uid_B的映射$fd,然后發(fā)送斗忌。

? ? ? ? ? ? ? ? ? ? 點對多质礼,同樣,從映射中獲取织阳,并遍歷眶蕉,$server->push($fd,“我是誰誰,我想告訴你們”)唧躲;

4.何時取消映射關系造挽?何時取消可以保證復用的時候,關系沒有錯亂惊窖?

當然是在關閉的時候取消當前的映射關系刽宪,以防止在復用的時候導致關系的錯亂。

以上僅為大概思路界酒,具體操作當中圣拄,還要考慮到心跳檢測,以防止客戶端斷電毁欣,等意外因素庇谆。

心跳檢測的思路:

方法1.客戶端在固定的時間間隔中發(fā)送請求岳掐,后臺服務判斷,某個$fd饭耳,在超出時間間隔范圍外串述,仍沒有給我匯報劲弦,則宣布死亡

方法2.服務端主動打發(fā)送信息憋槐,客戶端可返回信息彼乌,可不返回信息缩焦。

? ? ? ? ?A,客戶端返回信息症脂,此時后端接收到信息训柴,知道該連接還活著龙助。

? ? ? ? ?B,傲嬌的客戶端不返回信息捉邢,后端仍然孜孜不倦的發(fā)送琼稻,直到客戶端已經關閉吮螺,此時服務端發(fā)送的消息會在tcp層,因為發(fā)送超時帕翻,而關閉鸠补。

php的發(fā)展,在突破自身瓶頸之后嘀掸,不在是web小王子紫岩,而是可以百變金剛。phper在不止步于業(yè)務層面上更進一步横殴,相反被因,phper能實現更多的業(yè)務需求。

我為人人衫仑,人人為我梨与;美美與共,天下大同文狱;

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末粥鞋,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子瞄崇,更是在濱河造成了極大的恐慌呻粹,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件苏研,死亡現場離奇詭異等浊,居然都是意外死亡,警方通過查閱死者的電腦和手機摹蘑,發(fā)現死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門筹燕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事撒踪」В” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵制妄,是天一觀的道長掸绞。 經常有香客問我,道長耕捞,這世上最難降的妖魔是什么衔掸? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮俺抽,結果婚禮上具篇,老公的妹妹穿的比我還像新娘。我一直安慰自己凌埂,他們只是感情好,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布诗芜。 她就那樣靜靜地躺著瞳抓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪伏恐。 梳的紋絲不亂的頭發(fā)上孩哑,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機與錄音翠桦,去河邊找鬼横蜒。 笑死,一個胖子當著我的面吹牛销凑,可吹牛的內容都是我干的丛晌。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼斗幼,長吁一口氣:“原來是場噩夢啊……” “哼澎蛛!你這毒婦竟也來了?” 一聲冷哼從身側響起蜕窿,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤谋逻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后桐经,有當地人在樹林里發(fā)現了一具尸體毁兆,經...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年阴挣,在試婚紗的時候發(fā)現自己被綠了气堕。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖送巡,靈堂內的尸體忽然破棺而出摹菠,到底是詐尸還是另有隱情,我是刑警寧澤骗爆,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布次氨,位于F島的核電站,受9級特大地震影響摘投,放射性物質發(fā)生泄漏煮寡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一犀呼、第九天 我趴在偏房一處隱蔽的房頂上張望幸撕。 院中可真熱鬧,春花似錦外臂、人聲如沸坐儿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽貌矿。三九已至,卻和暖如春罪佳,著一層夾襖步出監(jiān)牢的瞬間逛漫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工赘艳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留酌毡,地道東北人。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓蕾管,卻偏偏與公主長得像枷踏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子掰曾,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理呕寝,服務發(fā)現,斷路器婴梧,智...
    卡卡羅2017閱讀 134,638評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,871評論 25 707