WebSocket 消息推送示例代码
时间: 2023-03-24 11:02:57 浏览: 108
以下是 WebSocket 消息推送的示例代码:
```
// 建立 WebSocket 连接
var socket = new WebSocket("ws://localhost:808");
// 连接成功时触发
socket.onopen = function(event) {
console.log("WebSocket 连接成功");
};
// 接收到消息时触发
socket.onmessage = function(event) {
console.log("接收到消息:" + event.data);
};
// 发送消息
socket.send("Hello, WebSocket!");
```
希望对你有帮助。
相关问题
netty websocket 消息推送
Netty是一个基于Java的异步事件驱动的网络应用框架,它提供了一种高效的方式来处理网络通信。Netty也提供了对WebSocket协议的支持,可以用于实现实时消息推送功能。
在Netty中实现WebSocket消息推送,需要以下几个步骤:
1. 创建WebSocket服务器:通过Netty的ServerBootstrap类创建一个WebSocket服务器,并指定监听的端口号。
2. 添加WebSocket协议支持:在服务器的ChannelPipeline中添加WebSocket协议的编解码器,以便处理WebSocket的握手和消息。
3. 处理WebSocket握手:在服务器的ChannelHandler中,重写channelRead方法,处理WebSocket的握手请求。当收到WebSocket握手请求时,需要发送握手响应,并将WebSocket连接添加到连接管理器中。
4. 处理WebSocket消息:在服务器的ChannelHandler中,重写channelRead方法,处理WebSocket的消息。当收到WebSocket消息时,可以根据业务需求进行相应的处理,比如将消息推送给指定的客户端。
5. 发送WebSocket消息:通过WebSocket连接发送消息给客户端,可以使用WebSocket的send方法。
综上所述,Netty可以通过创建WebSocket服务器、添加WebSocket协议支持、处理WebSocket握手和消息来实现消息推送功能。具体的实现代码可以参考引用\[1\]中的示例代码。
#### 引用[.reference_title]
- *1* *2* *3* [基于netty搭建websocket,实现消息的主动推送](https://blog.csdn.net/qq_24874939/article/details/87881867)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
springboot websocket消息推送
Spring Boot提供了一种简单而强大的方式来实现WebSocket消息推送。通过使用`@ServerEndpoint`注解将WebSocket服务器端点添加到您的应用程序中,可以轻松地创建一个WebSocket服务器。首先,您需要创建一个WebSocket服务器类,并用`@ServerEndpoint`注解进行标记。然后,使用`@OnOpen`、`@OnClose`和`@OnMessage`等注解来处理WebSocket的连接、关闭和消息事件。
以下是一个使用Spring Boot实现WebSocket消息推送的示例代码:
```java
@ServerEndpoint("/websocket/{uid}")
@Component
public class WebSocketServer {
private static final CopyOnWriteArraySet<WebSocketServer> webSocketServers = new CopyOnWriteArraySet<>();
private Session session;
private String uid;
@OnOpen
public void onOpen(Session session, @PathParam("uid") String uid) {
this.session = session;
this.uid = uid;
webSocketServers.add(this);
System.out.println("窗口开始监听uid:" + uid + ",当前在线人数:" + webSocketServers.size());
}
@OnClose
public void onClose() {
webSocketServers.remove(this);
System.out.println("窗口结束监听uid:" + uid + ",当前在线人数:" + webSocketServers.size());
}
@OnMessage
public void onMessage(String message) {
System.out.println("收到消息:" + message);
for (WebSocketServer server : webSocketServers) {
try {
server.session.getBasicRemote().sendText(message);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
```
要启用WebSocket支持,您还需要在配置类中添加`ServerEndpointExporter`的Bean(如下所示):
```java
@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}
```
以上代码示例中,`@ServerEndpoint`注解将WebSocket服务器端点映射到`/websocket/{uid}`路径,并且`@Component`注解将此类声明为Spring组件。`onOpen`方法在连接建立时被调用,`onClose`方法在连接关闭时被调用,`onMessage`方法在接收到客户端消息时被调用。`webSocketServers`集合用于跟踪当前在线的WebSocket服务器。
您可以通过调用`session.getBasicRemote().sendText(message)`将消息推送到所有连接的客户端。
阅读全文