網(wǎng)頁(yè)聊天室之Socket.io 的學(xué)習(xí)

socket.io系統(tǒng)api

1. 服務(wù)端

io.on('connection',function(socket));
監(jiān)聽(tīng)客戶端連接,回調(diào)函數(shù)會(huì)傳遞本次連接的socket

io.sockets.emit('String',data);
給所有客戶端廣播消息

io.sockets.socket(socketid).emit('String', data);
給指定的客戶端發(fā)送消息

socket.on('String',function(data));
監(jiān)聽(tīng)客戶端發(fā)送的信息

socket.emit('String', data);
給該socket的客戶端發(fā)送消息

廣播消息

//給除了自己以外的客戶端廣播消息
socket.broadcast.emit("msg",{data:"hello,everyone"}); 

//給所有客戶端廣播消息
io.sockets.emit("msg",{data:"hello,all"});

分組

socket.on('group1', function (data) {
        socket.join('group1');
});
socket.on('group2',function(data){
        socket.join('group2');
 });

客戶端發(fā)送

socket.emit('group1')酝豪,就可以加入group1分組意敛;
socket.emit('group2')耕驰,就可以加入group2分組爷肝;

踢出分組

socket.leave(data.room);

對(duì)分組中的用戶發(fā)送信息

//不包括自己
socket.broadcast.to('group1').emit('event_name', data);
//包括自己
io.sockets.in('group1').emit('event_name', data);

broadcast方法允許當(dāng)前socket client不在該分組內(nèi)
**獲取連接的客戶端socket **

io.sockets.clients().forEach(function (socket) {
    //.....
})

獲取分組信息

//獲取所有房間(分組)信息
io.sockets.manager.rooms

//來(lái)獲取此socketid進(jìn)入的房間信息
io.sockets.manager.roomClients[socket.id]

//獲取particular room中的客戶端毙籽,返回所有在此房間的socket實(shí)例
io.sockets.clients('particular room')

另一種分組方式

io.of('/some').on('connection', function (socket) {
    socket.on('test', function (data) {
        socket.broadcast.emit('event_name',{});
    });
});

客戶端

var socket = io.connect('ws://103.31.201.154:5555/some')
socket.on('even_name',function(data){
   console.log(data);
})

客戶端都鏈接到ws://103.31.201.154:5555 但是服務(wù)端可以通過(guò)io.of('/some')將其過(guò)濾出來(lái)奋渔。

另外张足,Socket.IO提供了4個(gè)配置的API:io.configure, io.set, io.enable, io.disable笨枯。其中io.set對(duì)單項(xiàng)進(jìn)行設(shè)置蛙讥,io.enable和io.disable用于單項(xiàng)設(shè)置布爾型的配置锯蛀。io.configure 可以讓你對(duì)不同的生產(chǎn)環(huán)境(如devlopment,test等等)配置不同的參數(shù)次慢。

2. 客戶端

建立一個(gè)socket連接

var socket = io("ws://103.31.201.154:5555");

監(jiān)聽(tīng)服務(wù)消息

socket.on('msg',function(data){
    socket.emit('msg', {rp:"fine,thank you"}); //向服務(wù)器發(fā)送消息
    console.log(data);
});

socket.on("String",function(data)) 監(jiān)聽(tīng)服務(wù)端發(fā)送的消息 Sting參數(shù)與服務(wù)端emit第一個(gè)參數(shù)相同

監(jiān)聽(tīng)socket斷開(kāi)與重連

socket.on('disconnect', function() {
    console.log("與服務(wù)其斷開(kāi)");
});
socket.on('reconnect', function() {
    console.log("重新連接到服務(wù)器");
});

客戶端socket.on()監(jiān)聽(tīng)的事件:

connect:連接成功
connecting:正在連接
disconnect:斷開(kāi)連接
connect_failed:連接失敗
error:錯(cuò)誤發(fā)生旁涤,并且無(wú)法被其他事件類型所處理
message:同服務(wù)器端message事件
anything:同服務(wù)器端anything事件
reconnect_failed:重連失敗
reconnect:成功重連
reconnecting:正在重連
當(dāng) 第一次連接時(shí),事件觸發(fā)順序?yàn)椋篶onnecting->connect迫像;當(dāng)失去連接時(shí)劈愚,事件觸發(fā)順序 為:disconnect->reconnecting(可能進(jìn)行多 次)->connecting->reconnect->connect。

摘自:http://www.cnblogs.com/xiezhengcai/p/3956401.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末闻妓,一起剝皮案震驚了整個(gè)濱河市菌羽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌由缆,老刑警劉巖注祖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異均唉,居然都是意外死亡是晨,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門舔箭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)罩缴,“玉大人,你說(shuō)我怎么就攤上這事◇镎拢” “怎么了烙荷?”我有些...
    開(kāi)封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)炉抒。 經(jīng)常有香客問(wèn)我奢讨,道長(zhǎng),這世上最難降的妖魔是什么焰薄? 我笑而不...
    開(kāi)封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮扒袖,結(jié)果婚禮上塞茅,老公的妹妹穿的比我還像新娘。我一直安慰自己季率,他們只是感情好野瘦,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著飒泻,像睡著了一般鞭光。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上泞遗,一...
    開(kāi)封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天惰许,我揣著相機(jī)與錄音,去河邊找鬼史辙。 笑死汹买,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的聊倔。 我是一名探鬼主播晦毙,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼耙蔑!你這毒婦竟也來(lái)了见妒?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤甸陌,失蹤者是張志新(化名)和其女友劉穎须揣,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體邀层,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡返敬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了寥院。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片劲赠。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出凛澎,到底是詐尸還是另有隱情霹肝,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布塑煎,位于F島的核電站沫换,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏最铁。R本人自食惡果不足惜讯赏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望冷尉。 院中可真熱鬧漱挎,春花似錦、人聲如沸雀哨。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)雾棺。三九已至膊夹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間捌浩,已是汗流浹背放刨。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嘉栓,地道東北人宏榕。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像侵佃,于是被迫代替她去往敵國(guó)和親麻昼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容