springBoot环境下创建webSocket服务端和客户端

摘要:
1.Pom文件导入依赖关系<dependency><groupId>org。弹簧框架。boot</groupId><artifactId>spring boot starter websocket</artifactId><version>2.0.4.RELEASE</version></dependent>2.创建与websocket相关的配置packagecom。实例

1.pom文件导入依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>

2.创建webSocket相关配置

复制代码
package com.example.demo.mainDemo;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.WebSocketHandler;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(myHandler(), "myHandler").setAllowedOrigins("*");
}
public WebSocketHandler myHandler() {
return new MyHandler();
}

}
复制代码

3.编写webSocket处理类,类似controller接口

复制代码
package com.example.demo.mainDemo;

import com.alibaba.fastjson.JSONObject;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;

import java.util.HashMap;
import java.util.Map;

/**
* 相当于controller的处理器
*/
public class MyHandler extends TextWebSocketHandler {
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
String payload = message.getPayload();
// Map<String, String> map = JSONObject.parseObject(payload, HashMap.class);
// System.out.println("=====接受到的数据"+map);
session.sendMessage(new TextMessage("服务器返回收到的信息," + payload));
}
}
复制代码



4.编写客户端

复制代码
package com.example.demo.mainDemo.client;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.websocket.*;

@ClientEndpoint
public class MyClient {
private static Logger logger = LoggerFactory.getLogger(MyClient.class);
private Session session;
@OnOpen
public void open(Session session){
logger.info("Client WebSocket is opening...");
this.session = session;
}

@OnMessage
public void onMessage(String message){
logger.info("Server send message: " + message);
}

@OnClose
public void onClose(){
logger.info("Websocket closed");
}

/**
* 发送客户端消息到服务端
* @param message 消息内容
*/
public void send(String message){
this.session.getAsyncRemote().sendText(message);
}
}
复制代码

5.创建main方法

复制代码
package com.example.demo.mainDemo.client;

import javax.websocket.ContainerProvider;
import javax.websocket.WebSocketContainer;
import java.net.URI;

public class ClientStart {
public static void main(String[] args){
try {
WebSocketContainer container = ContainerProvider.getWebSocketContainer();
MyClient client = new MyClient();
container.connectToServer(client, new URI("ws://127.0.0.1:8080/myHandler"));
// container.setDefaultMaxSessionIdleTimeout(5000L);
int turn = 0;
while(turn++ < 10){
client.send("client send: 客户端消息 " + turn);
Thread.sleep(1000);
}
}catch (Exception e){
e.printStackTrace();
}
}
}
复制代码

6.执行main方法

springBoot环境下创建webSocket服务端和客户端第9张

免责声明:文章转载自《springBoot环境下创建webSocket服务端和客户端》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ie6,ie7,ie8,FF 浏览器兼容问题一个数与0进行按位或,能取整下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux ------ 使用 screen 后 SSH 断开后程序依旧能在后台运行

为什么ssh断开后你运行的进程会退出呢? 因为所有进程都得有个父进程。当你ssh到一个服务器上时,打开的shell就是你所有执行命令的父进程。 当你断开ssh连接时,你的命令的父进程就没了。如果处理不当,这些进程就会收到SIGTERM信号,全被干掉了。 然后说解决方案: 让你运行的进程的父进程变成PID=1的init进程,这样你的shell退出后不影响这...

java web定时任务---quartz

写在前面:   前面有简单的记录下Timer定时的用法,但是在此次项目中,选择的是quartz来完成定时操作任务的。两者都可以完成定时操作,但是spring可以整合quartz,并且配置起来也比较简便,还可以同时跑多个任务。就选择了quartz,quartz的用法也很强大,这里也是简单的记录下。   第一步还是需要写自己的任务类,如果有涉及到对数据库的增删...

Flask-SQLAlchemy操作

Flask-SQLAlchemy SQLAlchemy 一. 介绍 SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并获取执行结果。 pip3 install sqlalchemy 组成部分: Engine,框架...

Oracle 字符集的查看和修改

一、什么是Oracle字符集        Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台。 影响Oracle数据库字符集最重要的参数是NLS_LANG参...

Hibernate 缓存机制

一、why(为什么要用Hibernate缓存?) Hibernate是一个持久层框架,经常访问物理数据库。 为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能。 缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。 二、what(Hibernate缓存原理是怎样的?)Hi...

12.1 flask基础之简单实用

一、Flask介绍(轻量级的框架,非常快速的就能把程序搭建起来) Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,...