WebSocket实例—初级聊天室(来自Tomcat8的examples)

通过Tomcat8的WebSocket examples学习如何构建一个初级聊天室。文章介绍了如何运行示例程序,程序分析涉及注解的作用、CopyOnWriteArraySet的使用以及消息发送的方法。在服务器端,探讨了@ServerEndpoint、@OnOpen、@OnClose等注解的用途,以及CopyOnWriteArraySet在管理WebSocket连接中的作用。客户端部分未详细展开。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序跑起来

在Tomcat的Webapps中自带有Tomcat的很多小例子。本文选取其中的关于WebSocket的例子,来进行学习。首先先将程序跑起来。
开发环境eclipse+tomcat8
1、新建项目名称为examples(自取名字也可以,但是在程序中也要更改,这里避免麻烦,就不该了)
2、将websocket文件夹拷贝到WebContent目录下
3、将WEB-INF/classes文件夹中websocket和util包拷贝到src目录下
4、导入必要的包,我缺的是juli.jar包,右键-》build path-》configure build path-》add External JARs,juli包在tomcat的bin目录下。

配置Tomcat步骤省略了,运行项目,在浏览器中输入
http://localhost:8080/examples/websocket/chat.xhtml
即能实现浏览器之间的对话。
运行如下所示:(注意我这里面改变了项目名,程序中也做了相应的改变)

这里写图片描述

程序分析

这样就实现了初级的聊天程序,我们再来分析一下源代码。

我们发现该段代码是基于注解的实现。注解是元数据,对代码进行说明。但是不影响代码的逻辑功能。我们先看一下这段代码大概实现了一个什么样的逻辑。
1、定义一下基本的变量信息,表示在线客户端的信息。定义了一个Set来保存会话连接。
2、当连接打开时,保存连接,并广播连接加入信息。
3、当服务器端接收到客户端的信息时,将信息进行广播。
4、当连接关闭时,广播连接关闭信息
5、对错误的处理。
然后,我们发现最核心的功能就是,
建立连接-》将连接保存在set中-》广播信息-》连接断开-》将连接从set中移除

服务器端

@ServerEndpoint(value = "/websocket/chat")
public class ChatAnnotation {
   
   

    private static final Log log = LogFactory.getLog(ChatAnnotation.class);
    private static final String GUEST_PREFIX = "Guest";
    private static final AtomicInteger connectionIds = new AtomicInteger(0);
    private static final Set<ChatAnnotation> connections =
            new CopyOnWriteArraySet<>();
    private final String nickname;
    private Session session;
    public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值