zoukankan      html  css  js  c++  java
  • websocket+node建立聊天室简单使用

    1.建立新的文件夹dome

    2.执行 npm init加载package.json文件

    3.node不支持websocket所以npm install  ws 下载 ws插件

    4.建立index.html文件代码如下

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8" />
    <title>WebSocket Chat</title>
    </head>

    <body>
    <script type="text/javascript">
      var socket;
      if (!window.WebSocket) {
        window.WebSocket = window.MozWebSocket;
      }
      if (window.WebSocket) {
        socket = new WebSocket("ws://localhost:8090/ws");
        socket.onmessage = function(event) {
          var ta = document.getElementById("responseText");
          ta.value = ta.value + " " + event.data;
        };
         socket.onopen = function(event) {
          var ta = document.getElementById("responseText");
          ta.value = "连接开启!";
        };
        socket.onclose = function(event) {
          var ta = document.getElementById("responseText");
          ta.value = ta.value + "连接被关闭";
        };
      } else {
        alert("你的浏览器不支持 WebSocket!");
      }

      function send(message) {
        if (!window.WebSocket) {
          return;
        }
        if (socket.readyState == WebSocket.OPEN) {
          socket.send(message);
        } else {
          alert("连接没有开启.");
        }
      }
    </script>
    <form onsubmit="return false;">
      <h3>WebSocket 聊天室:</h3>
      <textarea id="responseText" style=" 500px; height: 300px;"></textarea>
      <br />
      <input type="text" name="message" style=" 300px" value="Welcome to waylau.com" />
          <input type="button" value="发送消息" onclick="send(this.form.message.value)" />
      <input type="button" onclick="javascript:document.getElementById('responseText').value=''" value="清空聊天记录" />
    </form>
    </body>
    </html>
     
    5.建立index.js文件代码如下
     
    const WebSocket = require("ws");

    const server = new WebSocket.Server({ port: 8090 });

    server.on("open", function open() {
    console.log("connected");
    });

    server.on("close", function close() {
    console.log("disconnected");
    });

    server.on("connection", function connection(ws, req) {
    const ip = req.connection.remoteAddress;
    const port = req.connection.remotePort;
    const clientName = ip + port;

    console.log("%s is connected", clientName);

    // 发送欢迎信息给客户端

    ws.send("Welcome " + clientName);

    ws.on("message", function incoming(message) {
    console.log("received: %s from %s", message, clientName);

    // 广播消息给所有客户端
    server.clients.forEach(function each(client) {
         if (client.readyState === WebSocket.OPEN) {
        client.send(clientName + " -> " + message);
      }
    });
    });
    });
     
    6.启动代码  node index.js
     
    7.在浏览器打开index.html 就可以查看了
     
  • 相关阅读:
    XAML学习笔记之Layout(五)——ViewBox
    XAML学习笔记——Layout(三)
    XAML学习笔记——Layout(二)
    XAML学习笔记——Layout(一)
    从0开始搭建SQL Server 2012 AlwaysOn 第三篇(安装数据,配置AlwaysOn)
    从0开始搭建SQL Server 2012 AlwaysOn 第二篇(配置故障转移集群)
    从0开始搭建SQL Server 2012 AlwaysOn 第一篇(AD域与DNS)
    Sql Server 2012 事务复制遇到的问题及解决方式
    Sql Server 2008R2升级 Sql Server 2012 问题
    第一次ACM
  • 原文地址:https://www.cnblogs.com/cnlg123/p/11940881.html
Copyright © 2011-2022 走看看