前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java的服务端websocket怎么写

java的服务端websocket怎么写

作者头像
很酷的站长
发布2024-01-01 09:58:25
5100
发布2024-01-01 09:58:25
举报
java的服务端websocket怎么写
java的服务端websocket怎么写

在Java中实现WebSocket服务端,通常可以使用Java API for WebSocket(JSR 356)提供的标准库。以下是一个简单的Java WebSocket服务端的示例代码,使用了Java的javax.websocket库:

import java.io.IOException;

import java.util.Collections;

import java.util.HashSet;

import java.util.Set;

import javax.websocket.OnClose;

import javax.websocket.OnMessage;

import javax.websocket.OnOpen;

import javax.websocket.Session;

import javax.websocket.server.ServerEndpoint;

@ServerEndpoint("/websocket")

public class WebSocketServer {

? ? // 用于存储连接到WebSocket的所有会话

? ? private static Set<Session> clients = Collections.synchronizedSet(new HashSet<>());

? ? @OnOpen

? ? public void onOpen(Session session) {

? ? ? ? // 新的连接建立时调用

? ? ? ? clients.add(session);

? ? ? ? System.out.println("WebSocket连接建立,Session ID:" + session.getId());

? ? }

? ? @OnMessage

? ? public void onMessage(String message, Session session) {

? ? ? ? // 接收客户端消息时调用

? ? ? ? System.out.println("收到来自 " + session.getId() + " 的消息: " + message);

? ? ? ? // 向所有连接的客户端广播消息

? ? ? ? broadcast(message);

? ? }

? ? @OnClose

? ? public void onClose(Session session) {

? ? ? ? // 连接关闭时调用

? ? ? ? clients.remove(session);

? ? ? ? System.out.println("WebSocket连接关闭,Session ID:" + session.getId());

? ? }

? ? private void broadcast(String message) {

? ? ? ? // 向所有连接的客户端广播消息

? ? ? ? for (Session session : clients) {

? ? ? ? ? ? try {

? ? ? ? ? ? ? ? session.getBasicRemote().sendText(message);

? ? ? ? ? ? } catch (IOException e) {

? ? ? ? ? ? ? ? e.printStackTrace();

? ? ? ? ? ? }

? ? ? ? }

? ? }

}

在这个例子中:

  • @ServerEndpoint("/websocket") 注解用于标记WebSocket的端点(Endpoint),客户端将通过此端点连接到WebSocket服务器。
  • @OnOpen@OnMessage@OnClose 注解分别用于标记处理连接建立、接收消息和连接关闭的方法。

请注意,以上示例是一个简单的WebSocket服务器。在实际应用中,您可能需要更复杂的逻辑来处理连接管理、消息处理等。

要运行此WebSocket服务器,您需要一个支持WebSocket的Servlet容器,如Tomcat。将上述代码编译并打包成war文件,然后部署到Tomcat或其他支持WebSocket的容器中。

此外,请确保您的项目中包含了Java WebSocket API的库,如果使用Maven,可以在pom.xml中添加以下依赖:

<dependency>

? ? <groupId>javax.websocket</groupId>

? ? <artifactId>javax.websocket-api</artifactId>

? ? <version>1.1</version>

</dependency>

上述示例中使用了同步集合 Collections.synchronizedSet 来存储连接的会话,以确保线程安全。在实际应用中,您可能需要更复杂的会话管理机制,具体取决于您的需求。

收藏 | 0点赞 | 0打赏

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com