中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

websocket+node.js如何實現實時聊天系統問題咨詢

發布時間:2021-06-21 11:25:23 來源:億速云 閱讀:160 作者:小新 欄目:web開發

小編給大家分享一下websocket+node.js如何實現實時聊天系統問題咨詢,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

1.最近新學習websocket。做了一個實時聊天。用Node.js搭建的服務:serevr.js. 兩個相互通信頁面:client.html 和server.html

但是就是有很多問題,想讓知道的人幫我看看哈:

我先把代碼貼出來:

server.js:

var ws=require("nodejs-websocket");
 console.log("開始建立連接...");
 var str1=null,str2=null, clientReady=false,serverReady=false;
 var server=ws.createServer(function(conn){
   conn.on('text',function(str){
     console.log(str);
     /**
      * 用戶小雨第一次連接
      */
    if(str==="小雨"){
       str1=conn;
       clientReady=true;
       str1.sendText("歡迎"+str); 
    }
    /**
     * 用戶小喬第一次連接
     */
    if(str==="小喬"){
       str2=conn;
       serverReady=true;
      str2.sendText("歡迎"+str);
    }
    /**
     * 當有第二個用戶連接時。
     */
     if(clientReady&&serverReady){
      str2.sendText(str);
      str1.sendText(str);
    }
   })
   conn.on("close",function(code,reason){
     console.log("關閉連接");
   })
   conn.on("error",function(code,reason){
     console.log("異常關閉")
   });
 }).listen(8082);
 console.log("websocket連接完畢")
client.html:
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    .kuang{
      width: 600px;
      min-height: 50px;
      max-height:296px;
      border:1px solid;
      float: left;
      display: block;
      position:relative;
      overflow-y: scroll;
    }
    .value{ 
      width: 200px;
    }
    .input{
      display:block;
      position: absolute;
      left:0;
      margin-top: 300px;
    }
  </style>
</head>
<body>
  <label>連接用戶:</label>
  <input type="text" id="name" value="小雨" readonly/>
  <button id="conn">連接</button>
  <button id="close">斷開</button><br/><br/>
  <div class="kuang" id="mess"></div>
  <div class="input"> 
  <input type="text" class="value" id="value1" />
  <button id="send">發送</button>
  </div>
  <script>
    var name=document.getElementById("name").value;
    var mess=document.getElementById("mess");
    var value1=document.getElementById("value1");
    var conn= document.getElementById("conn");
    var close=document.getElementById("close");
    close.disabled=true;
    if(window.WebSocket){
     conn.onclick=function(){
      var ws=new WebSocket('ws://127.0.0.1:8082');
      conn.disabled=true;
      close.disabled=false; 
       ws.onopen=function(e){
          console.log("連接服務器成功"); 
           ws.send(name);
      } 
    ws.onmessage=function(e){
      var time=new Date();
      mess.innerHTML+=time.toUTCString()+":"+e.data+"<br>";
      document.getElementById("send").onclick=function(e){
        ws.send(name+"說:"+value1.value);
        value1.value=" ";
      }
      document.onkeydown = function(e) {
        e = e || window.event;
        if(e.keyCode == 13) {
           document.getElementById("send").onclick();
          return false;
        }
      }  
    }
    /**
     * 客戶端主動斷開連接
     * 
     * **/ 
    close.onclick=function(){
      ws.onclose();
      conn.disabled=false;
      close.disabled=true; 
    }  
     ws.onclose = function(e){
       console.log("服務器關閉");
     } 
    ws.onerror = function(){
      console.log("連接出錯");
    }
    }  
  }
  </script>
</body>
</html>

server.html 頁面和client.html的代碼一樣,就是用戶名字換成小喬啦。

接下來就是問題啦:

1.運行界面:

  client.html  連接以后:

websocket+node.js如何實現實時聊天系統問題咨詢

本來服務器只需要回傳一個歡迎小雨的,然后下面還輸出了一個。

server.html  小喬連接以后也出來了一個小喬,按理是歡迎小喬。然后告訴小喬小雨在線了。

websocket+node.js如何實現實時聊天系統問題咨詢

2.兩個頁面代碼一樣,但是就是不能只變成一個頁面,硬要兩個才能聊天。

3.server.js那邊邏輯有點問題,一直理不清楚。

以上是“websocket+node.js如何實現實時聊天系統問題咨詢”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

包头市| 临泽县| 黄大仙区| 从江县| 高清| 梨树县| 陵川县| 班玛县| 延川县| 邓州市| 房产| 保康县| 临西县| 博兴县| 呼和浩特市| 密云县| 弥渡县| 博客| 绥芬河市| 海阳市| 陕西省| 青阳县| 乌鲁木齐县| 利辛县| 敦化市| 枣强县| 台北县| 壶关县| 榆树市| 应用必备| 白沙| 奇台县| 防城港市| 田东县| 济阳县| 阳谷县| 高邮市| 闽清县| 灵寿县| 萨迦县| 青岛市|