websocket使用(前端、后端)

 后端:参考后端老师整理的文档

 springboot整合websocket_springboot websocket-优快云博客

前端 :如下

创建WebSocket连接

在JavaScript中,可以使用WebSocket构造函数来创建WebSocket连接,指定WebSocket服务器的URL作为参数。例如:

const socket = new WebSocket("ws://example.com/socketserver");

监听WebSocket事件

WebSocket对象提供了几个事件监听器,可以用来处理连接的不同状态和消息的接收。  

  • onopen:当WebSocket连接成功建立时触发。
  • onmessage:当接收到来自服务器的消息时触发。
  • onerror:当WebSocket连接出现错误时触发。
  • onclose:当WebSocket连接关闭时触发。 例如:
socket.onopen = function(event) {
    // 在握手阶段添加Authorization头
    console.log("连接成功");
};

socket.onmessage = function(event) {
    // 处理接收到的消息
    console.log("获取服务器数据: " + event.data);
};

socket.onerror = function(event) {
    console.log("WebSocket连接出现错误: " + event.error);
};

socket.onclose = function(event) {
    console.log("连接关闭 " + event.code);
};

发送数据到服务器

在WebSocket连接建立后,可以使用WebSocket对象的send方法向服务器发送数据。例如:

socket.send("Hello server!");

关闭WebSocket连接

当不再需要WebSocket连接时,可以使用WebSocket对象的close方法关闭连接。例如:

socket.close();

跨域问题

如果WebSocket连接的URL和当前页面的URL不同,需要在服务器端进行相应的跨域设置。  

数据格式

在发送和接收消息时,通常需要将数据转换为JSON字符串进行传输。例如:

var data = {
    msg_id: "1",
    msg_type: "test",
    content: {
        count: "10"
    }
};
var jsonString = JSON.stringify(data);
socket.send(jsonString);

在接收服务器返回的JSON数据时,可以使用JSON.parse方法将其解析为JavaScript对象。例如:

socket.onmessage = function(event) {
    var response = JSON.parse(event.data);
    console.log('Received message:', response);
};

注:如果网关不支持websocket,可以使用SSE(http的get请求):

SSE单向消息推送(get请求)-优快云博客

### 如何用Java实现WebSocket数字大屏后端开发 #### 一、引入必要的依赖项 为了构建WebSocket服务器,需要在项目中加入`javax.websocket-api`依赖。这可以通过Maven配置文件中的如下声明来完成: ```xml <dependency> <groupId>javax.websocket</groupId> <artifactId>javax.websocket-api</artifactId> <version>1.1</version> </dependency> ``` 此部分描述了创建WebSocket应用所需的基础库[^1]。 #### 二、建立WebSocket服务端逻辑 定义一个类继承自`javax.websocket.server.ServerEndpoint`,用于处理来自客户端的消息以及向其发送更新通知。下面是一个简单的例子展示如何设置这样的端点: ```java import javax.websocket.OnMessage; import javax.websocket.Session; import javax.websocket.server.ServerEndpoint; @ServerEndpoint("/websocket") public class DashboardSocket { @OnMessage public String handleMessage(String message, Session session) { // 处理接收到的信息并返回响应给前端 System.out.println("Received from client: " + message); // 这里可以添加业务逻辑,比如查询数据库获取最新数据 return "Echo: " + message; } } ``` 这段代码展示了基本的服务端消息接收机制。 对于更复杂的应用场景,可能还需要考虑定时推送功能或是广播特定事件到所有连接上的客户机等功能扩展。 #### 三、集成安全特性 考虑到实际应用场景的安全需求,在搭建上述基础架构之上还可以进一步集成了OAuth2协议的支持。通过这种方式不仅能够保护API接口免受未授权访问的影响,同时也提供了灵活的身份验证选项,包括但不限于授权码模式、简化模式等不同类型的登录方式[^3]。 例如,当涉及到移动设备接入时可以选择使用密码模式来进行身份验证;而对于Web应用程序,则更适合采用隐式流的方式进行快速便捷的单点登录操作。 #### 四、测试与部署 最后一步就是确保整个系统的正常运作。利用类似于前面提到的方法实例化`WebSocketClient`对象并通过指定URI地址发起请求,同时附带相应的处理器以便于捕获到来的数据变化情况[^2]。 ```java // 创建一个新的WebSocket客户端实例 var webSocketClient = new WebSocketClient(); try { URI uri = new URI("ws://localhost:8080/websocket"); // 执行连接尝试并将结果订阅至handler处理程序 webSocketClient.execute(uri).subscribe(handler -> { handler.onOpen(() -> System.out.println("Connected!")); handler.onError(Throwable::printStackTrace); handler.onClose(statusCode -> System.out.println("Disconnected with code:" + statusCode)); handler.onText(message -> System.out.println("Got Message: " + message)); }); } catch (URISyntaxException e) { throw new RuntimeException(e); } ``` 以上即为完整的基于Java平台下WebSocket技术栈驱动的大屏幕实时数据显示解决方案概览。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值