iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 28
0
自我挑戰組

挑戰30天完成PHP聊天室範例系列 第 28

[Day28]第二十七章-盤古開天(十五)-WEBSOCKET Client端(2)

我們繼續來看client的websocket怎麼做吧!

<script>
(function(){
#這一段可以讓程式碼隨時知道頁面上有什麼變化
})();
</script>

先宣告一個websocket連線,注意URL的格式:ws://ip:端口

<script>
(function(){
var key='all',mkey;
  var users={};//存放user的列表
  var url='ws://要連接的ip:端口';
  var so=false,n=false;
  #A.$('us')指的是取名為us的節點
  var lus=A.$('us'),lct=A.$('ct');
  so=new WebSocket(url);//宣告websocket
})();
</script>

宣告完之後要做握手的動作

<script>
(function(){
var key='all',mkey;
  var users={};//存放user的列表
  var url='ws://要連接的ip:端口';
  var so=false,n=false;
  #A.$('us')指的是取名為us的節點
  var lus=A.$('us'),lct=A.$('ct');
  so=new WebSocket(url);//宣告websocket
  
  //握手監聽函數
    so.onopen=function(){
      //狀態為1證明握手成功,然後把client自定義的名字發送過去
      if(so.readyState==1){
        so.send('type=add&ming='+n);
      }
    }
    
    //握手失敗或者其他原因連接socket失敗,則清除so對象並做相應提示操作
    so.onclose=function(){
      so=false;
    //握手失敗在頁面上顯示退出聊天室
      lct.appendChild(A.$$('<div class="dialog-me" ><div class="dialog-content-me">退出聊天室</div></div>'));
    }
})();
</script>

lct.appendChild()這個部份是指在lct的節點下新增東西,
也就是將聊天訊息一直往下增長的效果.

握玩手之後再來要做訊息監聽的部份,
我們留在下一章說明~~


上一篇
[Day27]第二十六章-盤古開天(十四)-WEBSOCKET Client端(1)
下一篇
[Day29]第二十八章-盤古開天(十六)-WEBSOCKET Client端(3)
系列文
挑戰30天完成PHP聊天室範例30

1 則留言

0
豬豬人
iT邦新手 5 級 ‧ 2019-09-06 16:06:41

A.$$ 會出現錯誤?

我要留言

立即登入留言