当前位置:首页 > 编程技术 > 正文内容

java的服务端websocket怎么写

yc88810个月前 (12-29)编程技术165

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 来存储连接的会话,以确保线程安全。在实际应用中,您可能需要更复杂的会话管理机制,具体取决于您的需求。

本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!


从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!


本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。


本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。


若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。


本文链接:https://www.10zhan.com/biancheng/10889.html

分享给朋友:

“java的服务端websocket怎么写” 的相关文章

【说站】laravel实现自定义404页面并给页面传值

【说站】laravel实现自定义404页面并给页面传值

以 laravel5.8 为例,虽然有自带的404页面,但太简单,我们更希望能自定义404页面,将用户留在站点。实现的方式很简单,将自定义的视图文件命名为 404.blade.php,并放到 reso...

【说站】Thymeleaf报错Error resolving template “XXX”

【说站】Thymeleaf报错Error resolving template “XXX”

修改了一下开源项目的目录结构访问突然报错Error resolving template “XXX”可能原因有如下三种:第一种可能:原因:在使用springboot的过程中,如果使用thymeleaf...

【说站】用一句话就可以去除宝塔面板操作上的二次验证

【说站】用一句话就可以去除宝塔面板操作上的二次验证

用过宝塔的朋友应该都会发现,现在宝塔面板有些鸡肋的功能,删除文件、删除数据库、删除站点等操作都需要做计算题!不仅加了几秒的延时等待,还无法跳过!这时候就会有朋友在想,如何去除宝塔面板的二次验证,此篇文...

【说站】利用Webhook实现Java项目自动化部署

【说站】利用Webhook实现Java项目自动化部署

用webhook就能实现Java项目自动部署,其实原理很简单。费话不多说,直接往下看教程。1. 创建gitee仓库并初始化2. 在linux安装git3. 在宝塔的软件的商店里下载Webhook4....

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

今天在安装MySQL时出现starting the server失败,经过查询分析得出以下结论,记录一下操作步骤。原因分析:如果电脑是第一次安装MySQL,一般不会出现这样的报错。如下图所示。star...

【说站】vagrant实现linux虚拟机的安装并配置网络

【说站】vagrant实现linux虚拟机的安装并配置网络

一、VirtualBox的下载和安装1、下载VirtualBox官网下载:https://www.virtualbox.org/wiki/Downloads我的电脑是Windows的,所以下载Wind...