Java WebSocket Demo ,案例手把手教学 记录(11)

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

希望能写一些简单的教程和案例分享给需要的人

java websocket 服务端

环境与设备

系统:window
开发工具:IDEA 2022.2.3

JAVA 网络通讯开发

第一步:新建一个 java 项目

  1. 填写项目名字
  2. 选择 JAVA 语言
  3. 选择 Maven
  4. 选择自己的JDK版本 (我当前用的是 1.8.0_301)

websocket建立连接demo,Java,java,websocket,开发语言

websocket建立连接demo,Java,java,websocket,开发语言

第二步:在 pom.xml 加入依赖 org.java-websocket

    <dependencies>
        <dependency>
            <groupId>org.java-websocket</groupId>
            <artifactId>Java-WebSocket</artifactId>
            <version>1.5.2</version>
        </dependency>
    </dependencies>

websocket建立连接demo,Java,java,websocket,开发语言

第三步:编写websocket核心代码:创建类

在 org.example 上右击鼠标(进入菜单)选择 Java Calss 创建一个类 :WebSocketServerDao 如下面两图操作

websocket建立连接demo,Java,java,websocket,开发语言

websocket建立连接demo,Java,java,websocket,开发语言

第四步:编写websocket核心代码:基础代码


package org.example;

import org.java_websocket.WebSocket;
import org.java_websocket.handshake.ClientHandshake;
import org.java_websocket.server.WebSocketServer;

import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class WebSocketServerDao extends WebSocketServer {

    private static List<WebSocket> webSocketList = new ArrayList<>();
    private ExecutorService executorService; // 线程池

    public WebSocketServerDao(int port) {
        super(new InetSocketAddress(port));
        executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); // 初始化线程池
    }

    @Override
    public void onOpen(WebSocket conn, ClientHandshake handshake) {
        webSocketList.add(conn);
        System.out.println("WebSocket连接已建立:" + conn.getRemoteSocketAddress());
    }

    @Override
    public void onClose(WebSocket conn, int code, String reason, boolean remote) {
        webSocketList.remove(conn);
        System.out.println("WebSocket连接已关闭:" + conn.getRemoteSocketAddress());
    }

    @Override
    public void onMessage(WebSocket conn, String message) {
        System.out.println("WebSocket接收到消息:" + message);
        executorService.execute(() -> { // 使用线程池处理消息
            conn.send("WebSocket服务端回复:" + message); // 发送消息到WebSocket客户端
        });
    }

    @Override
    public void onError(WebSocket conn, Exception ex) {
        System.err.println("WebSocket异常:" + ex.getMessage());
    }

    @Override
    public void onStart() {
        System.out.println("启动");
    }
}

websocket建立连接demo,Java,java,websocket,开发语言

测试,我们写一个h5前端

<!DOCTYPE html>
<html>

<head>
    <title>WebSocket Demo</title>
</head>

<body>
    <input type="text" id="messageInput" />
    <button onclick="sendMessage()">发送消息</button>
    <ul id="messages"></ul>

    <script>
        const socket = new WebSocket('ws://127.0.0.1:8088');

        socket.addEventListener('open', (event) => {
            console.log('WebSocket 连接已建立:', event);
            // 在这里可以发送消息
            socket.send('你好!');
        });

        // 连接打开时触发
        socket.onopen = function (event) {
            console.log("WebSocket 连接已打开");
        };

        // 收到消息时触发
        socket.onmessage = function (event) {
            console.log("收到服务器消息:" + event.data);

            var li = document.createElement("li");
            li.textContent = event.data;
            document.getElementById("messages").appendChild(li);
        };

        // 连接关闭时触发
        socket.onclose = function (event) {
            console.log("WebSocket 连接已关闭");
        };

        // 发送消息
        function sendMessage() {
            var message = document.getElementById("messageInput").value;
            socket.send(message);
        }
    </script>
</body>

</html>

websocket建立连接demo,Java,java,websocket,开发语言
websocket建立连接demo,Java,java,websocket,开发语言
websocket建立连接demo,Java,java,websocket,开发语言
websocket建立连接demo,Java,java,websocket,开发语言
websocket建立连接demo,Java,java,websocket,开发语言

扩展

如果我们要对这个进行扩展,我们就在 onMessage 里面做扩展就好了,到时候可以写一个 接收和发送的工具类,来做通讯中转。文章来源地址https://www.toymoban.com/news/detail-780402.html

到了这里,关于Java WebSocket Demo ,案例手把手教学 记录(11)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 手把手搭建KVM云平台(详细教学)

    1.点击“文件”,选择“新建虚拟机”。 2.选择“自定义(高级)”,点击“下一步”。 3.硬件兼容性选择“Workstation 16.x”,点击“下一步”。 4.选择“稍后安装操作系统”,点击“下一步”。 5.操作系统选择“Linux(L)”,版本选择“CentOS 7 64位”,点击“下一步”。 6. 自

    2024年02月02日
    浏览(50)
  • 【Kafka】手把手SASL,SSL教学

    Kafka支持以下SASL机制:GSSAPI 、PLAIN、 SCRAM-SHA-256、 SCRAM-SHA-512、 OAUTHBEARER。 本指南主要以SCRAM机制配置为主。 当使用SCRAM机制时,Kafka使用Zookeeper存储用户加密后的凭证,所以需要先使用Kafka提供的脚本进行用户的创建。 比如创建用户名为kafkaAdmin,密码为admin用户的操作命令如

    2024年01月17日
    浏览(42)
  • 手把手教学搭建ntp服务器

    目录 一 配置服务端(172.17.0.214) 第一步 查看当前时区和时间  第二步 安装ntp服务端 第三步 查看ntp服务状态:systemctl status ntpd 第四步 编辑ntp配置 第5步 启动ntp  第六步 设置开机自启 第七步 查看配置: ntpq -p 二 配置客户端 (172.17.0.215/216) 第一步 安装ntp:yum install ntp n

    2024年02月06日
    浏览(59)
  • Kaggle 新手入门必看,手把手教学

    Add Data 的路径:/kaggle/input git clone 的路径:/kaggle/working 1.进入官网 Kaggle 点击 Register 进行账号注册 2.随便点一个方式注册,本人用的邮箱 3.点进去填写对应信息进行注册,点击 next 即可 1.如果你看到是这个界面 2.如果你看到的是这个界面 Kaggle 新建 kernel 有两种方式,这个主要

    2024年01月25日
    浏览(46)
  • 基于FPGA:多目标运动检测(手把手教学①)

          在3月份发表了基于FPGA:运动目标检测(原理图+源码+硬件选择,可用毕设)后反应很强,很多同学表示,希望我们能 在运动目标检测的基础上 , 做多目标运动检测。 最近跟其他两个工程师刚好有空,就把就版本的工程 做了一次超大升级。       本次工程,花了

    2023年04月08日
    浏览(53)
  • Docker容器部署前端Vue服务——手把手教学

    需要工具: Xftp Xshell   首先对前端项目进行打包:npm run build   打包完成 ​ 在项目中生成dist文件: 通过Xshell在/home目录下创建项目文件夹 通过Xftp将打包的dist文件上传到服务器的项目文件夹下; 利用Xshell在拉取nginx镜像 在项目文件夹下编写nginx config配置文件 default.conf内容

    2024年02月07日
    浏览(62)
  • WebSocket---搭建与使用(手把手)

    WebSocket是一种在客户端和服务器之间进行实时双向通信的协议。与传统的HTTP请求-响应模式不同,WebSocket允许 服务器主动向客户端发送消息 ,而不需要客户端发起请求。这种实时通信的特性使得WebSocket非常适合于需要实时更新数据的应用,如聊天室、实时游戏、股票市场等。

    2024年02月02日
    浏览(39)
  • Hadoop高可靠集群搭建步骤(手把手教学)【超级详细】

    Hadoop高可靠集群搭建步骤(手把手教学) 【超级详细】 一、用管理员身份运行虚拟机 二、创建新的虚拟机: 选择自定义→选择硬件兼容性:Workstation 15.x→选择稍后安装→选Linux(L)(选CentOS 7 64位)→编辑虚拟机名字并选择文件位置→处理器数量和内核数量均选1→选择虚拟机

    2024年02月02日
    浏览(51)
  • 使用devstack安装部署OpenStack(据详细手把手教学)

            (1) 操作系统 :Linux。OpenStack官网推荐使用 Ubuntu-20.04 LTS进行安装OpenStack,所以本教程也以此版本为例。 (不推荐使用其他版本,出现错误较多,容易安装失败)         (2) 虚拟机软件 :VirtualBox或者Vmware。虚拟机的内存最好分配 8G 以上(至少4G),若达

    2024年02月02日
    浏览(89)
  • 【有问必答】搭建uniapp项目流程手把手教学

    博友有问,狗哥必答 前段时间,博友加本狗微信,询问 uniapp的学习方法 。本狗资历浅薄,没有专门学过uniapp,只能将自己日常开发 uniapp的基本流程和步骤 进行分享,希望可以略尽绵薄之力。 感谢 如下图所示的 博友朋友 的 询问支持 ,大家的支持才是我进步的动力。 实现

    2024年02月01日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包