Java websocket 使用

这篇具有很好参考价值的文章主要介绍了Java websocket 使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

WebSocket 是一种基于 TCP 协议的全双工通信协议,可以在浏览器和服务器之间建立实时、双向的数据通信。在 Java 中,我们可以使用 Java API for WebSocket(JSR 356)来实现 WebSocket。

WebSocket 的作用是在 Web 应用程序中实现实时、双向的数据通信,可以用于在线聊天、在线游戏、实时数据展示等场景。与传统的 HTTP 协议不同,WebSocket 可以保持长连接,实时传输数据,避免了频繁的 HTTP 请求和响应,节省了网络带宽和服务器资源,提高了应用程序的性能和用户体验。

java使用websocket,Java 教程,java,websocket,开发语言

WebSocket 示例代码

下面是一个使用 Java API for WebSocket 实现的简单的 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("/chat")
public class ChatServer {
    private static Set<Session> sessions = Collections.synchronizedSet(new HashSet<Session>());

    @OnOpen
    public void onOpen(Session session) {
        sessions.add(session);
    }

    @OnMessage
    public void onMessage(String message, Session session) throws IOException {
        for (Session s : sessions) {
            if (s.isOpen()) {
                s.getBasicRemote().sendText(message);
            }
        }
    }

    @OnClose
    public void onClose(Session session) {
        sessions.remove(session);
    }
}

在上面的代码中,我们使用 @ServerEndpoint 注解将 ChatServer 类作为 WebSocket 服务器端的入口点,定义了一个 /chat 的 WebSocket 端点。在 onOpen() 方法中,我们使用 sessions 集合保存当前连接的所有会话。在 onMessage() 方法中,我们遍历 sessions 集合,将收到的消息发送给所有连接的会话。在 onClose() 方法中,我们移除当前会话。这样,我们就实现了一个简单的在线聊天室。

客户端代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>WebSocket Chat</title>
</head>
<body>
    <input type="text" id="message">
    <button onclick="sendMessage()">Send</button>
    <div id="output"></div>
    <script>
        var websocket = new WebSocket("ws://" + window.location.host + "/chat");

        websocket.onmessage = function(event) {
            var output = document.getElementById("output");
            output.innerHTML += event.data + "<br>";
        };

        function sendMessage() {
            var message = document.getElementById("message").value;
            websocket.send(message);
        }
    </script>
</body>
</html>

在上面的代码中,我们使用 JavaScript 创建 WebSocket 对象,建立与 ChatServer 类的 /chat 端点的连接。在 onmessage() 方法中,我们将收到的消息添加到页面的 output 元素中。在 sendMessage() 方法中,我们获取页面的 message 元素的值,并将其发送给服务端。

在运行上面的代码后,我们可以在浏览器中打开多个页面,然后在每个页面的输入框中输入消息,点击 Send 按钮发送消息,就能在所有页面上看到收到的消息了。

总的来说,WebSocket 是一种实现实时、双向数据通信的协议,可以在 Web 应用程序中用于实现在线聊天、在线游戏、实时数据展示等场景。在 Java 中,我们可以使用 Java API for WebSocket 来实现 WebSocket,实现简单、易用、高效、可靠的 WebSocket 应用。

更多

除了上面提到的基本功能之外,Java API for WebSocket(JSR 356)还提供了一些其他的特性,包括:

  1. 编程模型:Java API for WebSocket 提供了基于注解和基于接口两种编程模型,使得开发者可以根据自己的需求选择合适的编程模型。
  2. 生命周期管理:Java API for WebSocket 提供了标准的生命周期管理,包括连接建立、消息接收、连接关闭等阶段,可以方便地管理 WebSocket 的生命周期。
  3. 消息编解码:Java API for WebSocket 提供了消息编解码的支持,可以将 Java 对象转换为 WebSocket 消息,或将 WebSocket 消息转换为 Java 对象。
  4. 子协议支持:Java API for WebSocket 支持子协议,可以根据需要选择合适的子协议,以实现更加灵活的数据传输。
  5. SSL/TLS 支持:Java API for WebSocket 支持 SSL/TLS 安全传输协议,可以保障数据的安全性和完整性。
  6. WebSocket 客户端 API:Java API for WebSocket 还提供了 WebSocket 客户端 API,可以方便地实现 WebSocket 客户端,与服务端进行双向通信。

下面是一个使用 Java API for WebSocket 实现消息编解码的示例代码:

import java.io.IOException;
import java.nio.ByteBuffer;
import javax.websocket.DecodeException;
import javax.websocket.Decoder;
import javax.websocket.EncodeException;
import javax.websocket.Encoder;
import javax.websocket.EndpointConfig;

public class Message {
    private String from;
    private String to;
    private String content;

    // 构造函数、getter 和 setter 略

    public static class MessageEncoder implements Encoder.Text<Message> {
        @Override
        public String encode(Message message) throws EncodeException {
            return message.getFrom() + "|" + message.getTo() + "|" + message.getContent();
        }

        @Override
        public void init(EndpointConfig config) {}

        @Override
        public void destroy() {}
    }

    public static class MessageDecoder implements Decoder.Text<Message> {
        @Override
        public Message decode(String message) throws DecodeException {
            String[] parts = message.split("\\|");
            if (parts.length != 3) {
                throw new DecodeException(message, "Invalid message format");
            }
            Message m = new Message();
            m.setFrom(parts[0]);
            m.setTo(parts[1]);
            m.setContent(parts[2]);
            return m;
        }

        @Override
        public boolean willDecode(String message) {
            return true;
        }

        @Override
        public void init(EndpointConfig config) {}

        @Override
        public void destroy() {}
    }
}

在上面的代码中,我们定义了一个 Message 类,包含 from、to 和 content 三个属性。然后,我们实现了一个 MessageEncoder 类和一个 MessageDecoder 类,分别用于将 Message 对象转换为字符串和将字符串转换为 Message 对象。在 MessageEncoder 类中,我们使用 encode() 方法将 Message 对象转换为字符串,使用 “|” 分隔三个属性。在 MessageDecoder 类中,我们使用 decode() 方法将字符串转换为 Message 对象,使用 “|” 正则表达式将字符串分割为三个部分,然后调用 Message 的 setter 方法设置属性值。

这样,我们就可以在 WebSocket 中传输 Message 对象了,而不需要手动进行字符串的拼接和解析。

小结

总的来说,Java API for WebSocket 提供了丰富的特性,可以帮助开发者快速、简单、高效地实现 WebSocket 应用,提高应用程序的性能和用户体验。文章来源地址https://www.toymoban.com/news/detail-627755.html

到了这里,关于Java websocket 使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java使用WebSocket步骤】

    在项目中需要用到与前端进行双向通信,遂选择了Java API for WebSocket(JSR 356): WebSocket是一种在Web浏览器和服务器之间进行双向通信的技术,可以使得浏览器与服务器之间建立长连接,并且实现实时数据传输。在Java中,可以使用Java API for WebSocket(JSR 356)实现WebSocket通信。

    2023年04月18日
    浏览(38)
  • java 使用 websocket

     1.导入websocket依赖 2.代码 3.配置

    2024年02月11日
    浏览(36)
  • Java websocket 使用

    WebSocket 是一种基于 TCP 协议的全双工通信协议,可以在浏览器和服务器之间建立实时、双向的数据通信。在 Java 中,我们可以使用 Java API for WebSocket(JSR 356)来实现 WebSocket。 WebSocket 的作用是在 Web 应用程序中实现实时、双向的数据通信,可以用于在线聊天、在线游戏、实时

    2024年02月14日
    浏览(30)
  • java中Websocket的使用

    WebSocket是一个连接,这个连接是客户端(页面)与服务端之间的连接,处理两者间通讯; 好处:HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯,不需要每次发送请求接口获取数据, 使用场景:比如客户端登录后,出现的消息推送,每天

    2024年02月15日
    浏览(34)
  • 在Java中使用WebSocket

    如果您觉得本博客的内容对您有所帮助或启发,请关注我的博客,以便第一时间获取最新技术文章和教程。同时,也欢迎您在评论区留言,分享想法和建议。谢谢支持! 1.1 什么是WebSocket WebSocket是一种协议,用于在Web应用程序和服务器之间建立实时、双向的通信连接。它通过

    2024年02月11日
    浏览(37)
  • JAVA 使用WebSocket发送通知消息

    注: 1、jdk必须要1.8及以上 2、项目若有接口拦截过滤,WebSocket接口必须要配置拦截,使其可以验证通过 WebSocket 业务类 发送消息的方法 前端代码

    2024年02月11日
    浏览(50)
  • Java 实现使用 Websocket 发送消息

    需求背景:之前做了个楼栋房间数量出租了多少,需要在数据大屏上实时展示 解决方案:以切面拦截出租接口,当有房间出租时重新查询相关数据,封装好用websocket实时传送前端展示 提示:以下是本篇文章正文内容,下面案例可供参考 WebSocket 是一种在单个TCP连接上进行全双

    2024年03月27日
    浏览(42)
  • Android程序中使用websocket通信(java-websocket)

    使用场景: 需要和硬件保持实时通信 为什么用websocket: 在以前的消息推送机制中,用的都是http轮询(polling),做一个定时器定时向服务器发送请求,这种方式是非常消耗资源的,因为它本质还是http请求,而且显得非常笨拙。而WebSocket 在浏览器和服务器完成一个握手的动作

    2024年01月23日
    浏览(47)
  • 大型医院云HIS系统:采用前后端分离架构,前端由Angular语言、JavaScript开发;后端使用Java语言开发 融合B/S版电子病历系统

    一套医院云his系统源码 采用前后端分离架构,前端由Angular语言、JavaScript开发;后端使用Java语言开发。融合B/S版电子病历系统,支持电子病历四级,HIS与电子病历系统均拥有自主知识产权。 文末卡片获取联系! 基于云计算技术的B/S架构的医院管理系统(简称云HIS),采用前后

    2024年02月03日
    浏览(48)
  • Java使用websocket实现消息实时通知

    博客仅做学习记录使用。 做项目中遇到这样一个实时通知需求,因为第一次接触这个,期间查了很多资料,看了很多博客,最后实现功能,查询的博客太多,就不一一放出来了,感谢各位大佬。 websocket方式主要代码来源于这个大佬的博客: https://blog.csdn.net/moshowgame/article/d

    2024年02月08日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包