NodeJs 实现简单WebSocket即时通讯的示例代码

服务器的实现很简单,先装一个nodeJs的模块,叫nodejs-websocket , 直接在nodeJs命令行中敲入:npm install nodejs-websocket回车就可以安装好了,然后就可以开始建立服务器了,因为有了nodejs-websocket模块,所以很多工作都不用我们自己做,直接调用别人封装好的方法就行了:

服务端代码

根据客户端传来的消息判断哪个是game1,哪个是game2,保存connection对象。

var ws = require(\"nodejs-websocket\");
console.log(\"开始建立连接...\")

var game1 = null,game2 = null , game1Ready = false , game2Ready = false;
var server = ws.createServer(function(conn){
  conn.on(\"text\", function (str) {
    console.log(\"收到的信息为:\"+str)
    if(str===\"game1\"){
      game1 = conn;
      game1Ready = true;
      conn.sendText(\"success\");
    }
    if(str===\"game2\"){
      game2 = conn;
      game2Ready = true;
    }

    if(game1Ready&&game2Ready){
      game2.sendText(str);
    }

    conn.sendText(str)
  })
  conn.on(\"close\", function (code, reason) {
    console.log(\"关闭连接\")
  });
  conn.on(\"error\", function (code, reason) {
    console.log(\"异常关闭\")
  });
}).listen(8001)
console.log(\"WebSocket建立完毕\")

【game1代码】:通过点击获取三个框的内容,传到服务器

<!doctype html>
<html lang=\"en\">
<head>
  <meta charset=\"UTF-8\">
  <title>Document</title>
  <style>
    .kuang{text-align: center;margin-top:200px;}
    #mess{text-align: center}
    .value{width: 200px;height:200px;border:1px solid;text-align: center;line-height: 200px;display: inline-block;}
  </style>
</head>
<body>
  <div id=\"mess\">正在连接...</div>
  <div class=\"kuang\">
    <div class=\"value\" id=\"value1\">小明小明</div>
    <div class=\"value\" id=\"value2\">大胸大胸</div>
    <div class=\"value\" id=\"value3\">小张小张</div>
  </div>

  <script>
    var mess = document.getElementById(\"mess\");
    if(window.WebSocket){
      var ws = new WebSocket(\'ws://192.168.17.80:8001\');

      ws.onopen = function(e){
        console.log(\"连接服务器成功\");
        ws.send(\"game1\");
      }
      ws.onclose = function(e){
        console.log(\"服务器关闭\");
      }
      ws.onerror = function(){
        console.log(\"连接出错\");
      }

      ws.onmessage = function(e){
        mess.innerHTML = \"连接成功\"
        document.querySelector(\".kuang\").onclick = function(e){
          var time = new Date();
          ws.send(time + \" game1点击了“\" + e.target.innerHTML+\"”\");
        }
      }
    }
  </script>
</body>
</html>

【game2代码】:获取服务推送来的消息,并且显示

<!doctype html>
<html lang=\"en\">
<head>
  <meta charset=\"UTF-8\">
  <title>Document</title>
  <style>
    .kuang{text-align: center;margin-top:200px;}
    #mess{text-align: center}
  </style>
</head>
<body>
  <div id=\"mess\"></div>

  <script>
    var mess = document.getElementById(\"mess\");
    if(window.WebSocket){
      var ws = new WebSocket(\'ws://192.168.17.80:8001\');

      ws.onopen = function(e){
        console.log(\"连接服务器成功\");
        ws.send(\"game2\");
      }
      ws.onclose = function(e){
        console.log(\"服务器关闭\");
      }
      ws.onerror = function(){
        console.log(\"连接出错\");
      }

      ws.onmessage = function(e){
        var time = new Date();
        mess.innerHTML+=time+\"的消息:\"+e.data+\"<br>\"
      }
    }
  </script>
</body>
</html>

运行截图:

NodeJs 实现简单WebSocket即时通讯的示例代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容