当前位置: 首页 > news >正文

java语言中的websocket

你好!我是TensGPT,一个由TensGPT团队开发的AI助手。我可以帮助你了解和使用Java语言中的WebSocket。如果你有任何问题或需要示例代码,请告诉我。

 

### 什么是WebSocket?

WebSocket是一种在单个TCP连接上进行全双工通信的协议。它被设计为可以在Web浏览器和Web服务器之间进行实时通信,适用于需要频繁更新数据的应用,如在线聊天、实时游戏、股票行情等。

 

### 使用Java实现WebSocket

在Java中,可以使用Java EE提供的WebSocket API来实现WebSocket服务器。以下是一个简单的例子,演示如何在Java中创建一个WebSocket服务器端和一个客户端。

 

#### 创建WebSocket服务器端

首先,确保你有Java EE依赖,例如`javax.websocket-api`。你可以在Maven项目的`pom.xml`中添加以下依赖:

```xml

<dependency>

    <groupId>javax.websocket</groupId>

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

    <version>1.1</version>

</dependency>

```

 

然后,创建一个WebSocket服务器端:

 

```java

import javax.websocket.OnClose;

import javax.websocket.OnMessage;

import javax.websocket.OnOpen;

import javax.websocket.Session;

import javax.websocket.server.ServerEndpoint;

import java.io.IOException;

 

@ServerEndpoint("/websocket")

public class WebSocketServer {

 

    @OnOpen

    public void onOpen(Session session) {

        System.out.println("Connection opened: " + session.getId());

    }

 

    @OnMessage

    public void onMessage(String message, Session session) throws IOException {

        System.out.println("Received message: " + message);

        session.getBasicRemote().sendText("Echo: " + message);

    }

 

    @OnClose

    public void onClose(Session session) {

        System.out.println("Connection closed: " + session.getId());

    }

}

```

 

#### 部署WebSocket服务器端

将上述WebSocket服务器端类部署到支持Java EE的Web容器,如Apache Tomcat或WildFly。你需要创建一个`web.xml`文件来配置WebSocket端点。

 

```xml

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 

         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 

                             http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 

         version="3.1">

 

    <servlet>

        <servlet-name>javax.ws.rs.core.Application</servlet-name>

        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>

    </servlet>

 

    <servlet-mapping>

        <servlet-name>javax.ws.rs.core.Application</servlet-name>

        <url-pattern>/websocket/*</url-pattern>

    </servlet-mapping>

 

</web-app>

```

 

#### 创建WebSocket客户端

你可以使用Java SE中的WebSocket API来创建一个WebSocket客户端:

 

```java

import javax.websocket.ClientEndpoint;

import javax.websocket.ContainerProvider;

import javax.websocket.OnMessage;

import javax.websocket.Session;

import javax.websocket.WebSocketContainer;

import java.net.URI;

 

@ClientEndpoint

public class WebSocketClient {

 

    @OnMessage

    public void onMessage(String message) {

        System.out.println("Received from server: " + message);

    }

 

    public static void main(String[] args) throws Exception {

        WebSocketContainer container = ContainerProvider.getWebSocketContainer();

        URI uri = new URI("ws://localhost:8080/websocket");

        Session session = container.connectToServer(WebSocketClient.class, uri);

        session.getBasicRemote().sendText("Hello, WebSocket server!");

    }

}

```

 

### 运行与测试

1. 配置并启动你的Web容器(如Tomcat)。

2. 部署你的Web应用。

3. 运行WebSocket客户端。

 

这样,你就可以看到客户端和服务器之间的消息传递。

http://www.lryc.cn/news/425597.html

相关文章:

  • ASP.NET在线交流论坛管理系统
  • 【Kubernetes】身份认证与鉴权
  • 数据集与数据库:有什么区别?
  • BurpSuite
  • NetApp数据恢复—NetApp存储误删除文件如何恢复数据?
  • 基于springboot的医药管理系统
  • Android中的EventBus的用法
  • 梧桐数据库(WuTongDB):数据库在数据处理中是如何利用缓存机制的
  • C语言-数据类型
  • 左值引用、右值引用、移动构造
  • tekton通过ceph挂载node_modules的时候报错failed to execute command: copying dir: symlink
  • Xil_DCacheFlushRange的用法
  • k8s使用subpathexpr和hostpath分pod名字持久化日志
  • FChen的408学习日记--三次握手和四次握手
  • Unity技巧:轻松实现鼠标悬停文本时的动态变色效果
  • 谷歌账号活动异常,或者申诉回来以后需要手机验证的原因,以及验证手机号的错误操作和正确操作
  • System V IPC奥秘:解锁共享内存、消息队列与信号量的高效通信之路
  • 怎么将pdf转为ppt文件?pdf转ppt的8个方法
  • 【Datawhale AI夏令营第四期】 魔搭-大模型应用开发方向笔记 Task03 大咖项目分享 人话八股文Bakwaan_Buddy项目开发尝试
  • 如何在wordpress当中使用插件WP Coder(将html、css、javascript应用到wordpress上)
  • ActiveMQ、RabbitMQ、Kafka、RocketMQ在消息回溯、消息堆积+持久化、消息追踪、消息过滤的区别
  • 使用ITextRenderer导出PDF后无法打开问题,提示‘无法打开此文件‘
  • STL必须掌握的几大常见算法
  • HAproxy 七层负载均衡调度器详解及配置
  • Python学习笔记--私有属性、构造方法、析构方法、常用内置方法
  • 4章8节:用R做数据重塑,行列命名和数据类型转换
  • 浏览器发出请求到响应的过程
  • eNSP 华为划分VLAN
  • 公用事业公司签署大规模电力供应协议
  • C语言 | Leetcode C语言题解之第341题扁平化嵌套列表迭代器