websocket demo

git

node.js创建websocket 的服务

Nodejs Websocket包

ws.createServer([options], [callback])
The callback is a function which is automatically added to the “connection” event.

前端代码

1. 创建实例、打开连接
this.websocket = new WebSocket('ws://127.0.0.1:8001');
# 实例回调
1.1 连接成功
this.websocket.onopen = () => {
    this.setMessageInnerHTML('WebSocket连接成功');
};
1.2 接收服务端消息
this.websocket.onmessage = (event) => {
  this.setMessageInnerHTML(event.data);
};
2. 关闭连接
this.websocket.close();
3. 发送消息
this.websocket.send(message);

完整代码

  • 后端
var ws = require('nodejs-websocket');
console.log('开始建立连接...')

ws.createServer(function (conn) {
  conn.on('text', function (str) {
    // 收到文本时触发,str 时收到的文本字符串
    console.log('浏览器给服务端收到的信息为:' + str)
    conn.sendText('服务器返回内容')
  })
  conn.on('close', function (code, reason) {
    console.log('关闭连接', code, reason)
  });
  conn.on('error', function (code, reason) {
    // 发生错误时触发,如果握手无效,也会发出响应
    console.log('异常关闭', code, reason)
  });
}).listen(8001)
console.log('WebSocket建立完毕');
  • 前端
<template>
  <div>
    <hr />
    <button @click="openWebSocket">打开WebSocket连接</button>
    <hr />
    Welcome<br /><input id="text" type="text" />
    <button @click="send">发送消息</button>
    <hr />
    <button @click="closeWebSocket">关闭WebSocket连接</button>
    <hr />
    <h1 id="message"></h1>
  </div>
</template>

<script>
export default {
  data() {
    return {
      websocket: null,
    };
  },
  mounted() {
    this.openWebSocket();
  },
  methods: {
    //将消息显示在网页上
    setMessageInnerHTML(innerHTML) {
      document.getElementById('message').innerHTML += innerHTML + '<br/>';
    },

    //关闭WebSocket连接
    closeWebSocket() {
      this.websocket.close();
    },

    //发送消息
    send() {
      var message = document.getElementById('text').value;
      this.websocket.send(message);
    },
    //打开WebSocket连接
    openWebSocket() {
      //判断当前浏览器是否支持WebSocket
      if ('WebSocket' in window) {
        this.websocket = new WebSocket('ws://127.0.0.1:8001');
      } else {
        alert('当前浏览器 Not support websocket');
      }

      //连接发生错误的回调方法
      this.websocket.onerror = () => {
        this.setMessageInnerHTML('WebSocket连接发生错误');
      };

      //连接成功建立的回调方法
      this.websocket.onopen = () => {
        this.setMessageInnerHTML('WebSocket连接成功');
      };

      //接收到消息的回调方法
      this.websocket.onmessage = (event) => {
        this.setMessageInnerHTML(event.data);
      };

      //连接关闭的回调方法
      this.websocket.onclose = () => {
        this.setMessageInnerHTML('WebSocket连接关闭');
      };

      //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
      window.onbeforeunload = () => {
        this.closeWebSocket();
      };
    },
  },
};
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h3 {
  margin: 40px 0 0;
}
ul {
  list-style-type: none;
  padding: 0;
}
li {
  display: inline-block;
  margin: 0 10px;
}
a {
  color: #42b983;
}
</style>

也可以在前端引入socket.io的cdn,后端用express搭建(也要require socket.io)

前端代码:

### 关于 WebSocket 的演示实例 为了创建一个简单的 WebSocket 应用程序,可以参考 `WebSocketDemo` 项目教程[^1]。此项目提供了一个完整的 WebSocket 实现示例。 #### 创建 WebSocket 服务器端逻辑 在服务端实现 WebSocket 功能时,通常会涉及到处理客户端连接以及消息收发的操作。以下是基于 Java 的简单 WebSocket 服务器端代码片段: ```java import javax.websocket.OnMessage; import javax.websocket.Session; import javax.websocket.server.ServerEndpoint; @ServerEndpoint("/websocket") public class WebSocketServer { @OnMessage public String handleMessage(String message, Session session) { // 处理接收到的消息并返回响应给客户端 System.out.println("Received from client: " + message); return "Echo: " + message; } } ``` 这段代码定义了一个名为 `WebSocketServer` 的类,并通过注解指定了该类作为 WebSocket 终结点监听 `/websocket` 路径下的请求。当有新消息到达时,`handleMessage()` 方法会被调用来接收来自客户端的信息并将回显发送回去。 对于更复杂的场景,则可能需要用到其他 API 接口来管理远程终端或会话状态等特性[^2]。 #### 客户端交互方式 为了让浏览器能够与上述建立好的 WebSocket 进行通信,在 HTML 页面内可以通过 JavaScript 来发起连接和交换数据: ```html <script> var ws = new WebSocket('ws://localhost:8080/websocket'); ws.onopen = function() { console.log('Connected to server'); }; ws.onmessage = function(event) { console.log('Message received:', event.data); }; </script> ``` 这里展示了如何利用原生 WebSockets API 构建起同服务器之间的实时通讯链路;一旦成功建立了链接之后就可以自由地向对方推送任意格式的数据包了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值