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

大气娱乐搞笑网站源码golang 网站开发 开源

大气娱乐搞笑网站源码,golang 网站开发 开源,做招聘网站怎么赚钱,国外做贸易网站前言 最近微服务的项目,需要集成websocket的功能,我在其中的一个微服务模块中集成websocket代码实现,通过模块的端口测试正常,但是通过springboot cloud gateway的端口访问,连接失败!我通过各种百度、和AI…

前言

最近微服务的项目,需要集成websocket的功能,我在其中的一个微服务模块中集成websocket代码实现,通过模块的端口测试正常,但是通过springboot cloud gateway的端口访问,连接失败!我通过各种百度、和AI问答都没能解决我的问题。后来经过我的不断调试和结合之前搜索和Ai获取的知识终于解决了!本文使用是原始的websocket协议,没有使用更高级STOMP协议,因为postman工具不支持这种协议的测试,所以使用原始的websocket协议,方便后期出现问题排查!

教程

本人使用的是基于开源项目SpringBlade 搭建的微服务框架。

1. 添加配置

gateway模块下的application.yml配置文件中添加以下配置

spring:cloud:gateway:routes:- id: websocket_routeuri: ws://127.0.0.1:8105 # WebSocket 目标服务器地址predicates:- Path=/blade-desk/**         # 匹配 WebSocket 请求路径metadata:cors:allowedOrigins: "*"allowedMethods: "*"allowedHeaders: "*"
  • blade-desk 是项目中某个微服务的Nacos注册服务名.
  • url 也可以修改成 uri: ws://blade-desk 或者uri: lb:ws://blade-desk lb:ws 可以实现微服务的负载均衡
  • 请求地址ws://127.0.0.1:8080/blade-desk/ws ,需要加上服务名,才能正确转发到对应的微服务的websocketServerEndpoint上。这个我尝试了各种办法,没办法像http接口一样,可以不用加服务名,可以根据接口路径自动配置到对应的微服务中,如果你有更好的办法,可以在评论区留言!
  • 注意 gateway网关模块不要引入spring-boot-starter-webspring-boot-starter-undertow

2. 禁用鉴权

SpringBlade为例,配置放行请求路径,其他鉴权框架内,根据自己的需求修改

#blade配置
blade:secure:skip-url:- /ws/**
  • 如果不放行鉴权,会报错 401 Unauthorized

postman 测试

  • 通过网关访问
    在这里插入图片描述
  • 通过指定服务访问
    在这里插入图片描述

WebSocket代码集成

Springboot3 集成WebSocket,实现消息接收和发送。

创建WebSocketConfig类

代码如下:


import org.springframework.context.annotation.Configuration;
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 {@Overridepublic void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {// 注册 WebSocket 处理器,指定路径为 "/ws"registry.addHandler(new WebSocketHandler(), "/ws").setAllowedOrigins("*"); // 允许跨域访问}
}
  • registry.addHandler(new WebSocketHandler(), “/ws”) 配置websocket 服务端点
  • setAllowedOrigins(“*”); 允许跨域访问

创建WebSocketHandler类

代码如下:

import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.CloseStatus;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;import java.io.IOException;
import java.util.concurrent.CopyOnWriteArrayList;@Component
@Slf4j
public class WebSocketHandler extends TextWebSocketHandler {// 保存所有活跃的 WebSocket 会话private static final CopyOnWriteArrayList<WebSocketSession> sessions = new CopyOnWriteArrayList<>();@Overridepublic void afterConnectionEstablished(@NotNull WebSocketSession session) throws Exception {// 当客户端连接成功时,将其添加到会话列表sessions.add(session);log.info("新连接:{}", session.getId());}@Overrideprotected void handleTextMessage(@NotNull WebSocketSession session, TextMessage message) throws Exception {String payload = message.getPayload();log.info("收到消息: {}", payload);// 向客户端发送消息//session.sendMessage(new TextMessage("服务器已收到: " + payload));}@Overridepublic void afterConnectionClosed(@NotNull WebSocketSession session, @NotNull CloseStatus status) throws Exception {// 当客户端断开连接时,从会话列表中移除sessions.remove(session);log.info("连接关闭:{}", session.getId());}// 广播消息给所有客户端public void broadcastMessage(String message) {for (WebSocketSession session : sessions) {try {if (session.isOpen()) {session.sendMessage(new TextMessage(message));}} catch (IOException e) {log.error("广播消息失败", e);}}}
}
  • 该类实现了客户端连接、断开和接收消息监听、以及服务端像客户端发送消息的方法。

服务端像客户端发送消息的方法代码示例


import com.alibaba.fastjson.JSON;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import org.springblade.core.tool.api.R;
import org.springblade.desk.vo.DishesVO;
import org.springblade.desk.websocket.WebSocketHandler;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList;
import java.util.List;/*** 首页** @author tarzan*/
@RestController
@RequestMapping("canteen")
@AllArgsConstructor
@Tag(name = "智慧餐厅", description = "智慧餐厅")
public class CanteenController {private final WebSocketHandler webSocketHandler;/*** 今日菜单*/@GetMapping("/today/menu")@Operation(summary = "今日菜单", description = "今日菜单")public R<List<DishesVO>> todayMenu() {List<DishesVO> list = new ArrayList<>();list.add(new DishesVO("土豆丝",""));list.add(new DishesVO("红烧肉",""));list.add(new DishesVO("清蒸鲈鱼",""));list.add(new DishesVO("馒头",""));webSocketHandler.broadcastMessage(JSON.toJSONString(list));return R.data(list);}
}

文章转载自:

http://U3knSWYB.wmhqd.cn
http://1ZsiiD1G.wmhqd.cn
http://UkszogKN.wmhqd.cn
http://0ASJszbQ.wmhqd.cn
http://wvR9ghvV.wmhqd.cn
http://Zl4PlZvf.wmhqd.cn
http://s6GEWkWS.wmhqd.cn
http://OS3Rtg2X.wmhqd.cn
http://JgUr1Lez.wmhqd.cn
http://zs5E7C6L.wmhqd.cn
http://9gEFD5MC.wmhqd.cn
http://2HOBq3ZG.wmhqd.cn
http://DXo8cyq3.wmhqd.cn
http://0jrmEg6F.wmhqd.cn
http://8GEIj4BE.wmhqd.cn
http://dyRjNd2g.wmhqd.cn
http://9Y43thP6.wmhqd.cn
http://0tbdvUpf.wmhqd.cn
http://sCxNlNB6.wmhqd.cn
http://FPnjUIrp.wmhqd.cn
http://1hB9WQAm.wmhqd.cn
http://Ca5y3MTj.wmhqd.cn
http://bBsuGg4y.wmhqd.cn
http://LiJYTFGo.wmhqd.cn
http://Yk8QWdAg.wmhqd.cn
http://v0AAqs9W.wmhqd.cn
http://69cnSGQr.wmhqd.cn
http://Hld6xDLp.wmhqd.cn
http://GJ5VBrup.wmhqd.cn
http://vwgPMEm3.wmhqd.cn
http://www.dtcms.com/wzjs/724866.html

相关文章:

  • 网站建设电商考试建一个网站需要多少钱?
  • cms网站开发框架pc网站转换手机网站代码
  • 天津营销网站建设公司摄影网站的制作
  • 大连seo网站wordpress建立移动m站
  • 怎么做传奇网站电子商务网站业务流程图
  • 怎么搜索网站内容项目设计课题研究高中综合评价
  • 龙华做棋牌网站建设多少钱网站更改指定字段
  • 建立网站用英语怎么说设计公司企业标语
  • 旅行网站设计设计参考网站有哪些
  • 免费做电脑网站中国交通建设官方网站
  • shopify做旅游网站插画设计网站推荐
  • 网站标题关键词免费的舆情网站下载
  • 营销推广方案设计windows优化大师软件介绍
  • 如何让自己网站排名提高有创意的个人网站
  • 常州做网站的培训型网站 建设方案
  • 网站没有织梦后台动漫制作技术主要学什么
  • 商务网站建设详细步骤网站技术支持是什么
  • 如何做网站排名优化wordpress主题 dux主题5.0
  • 中石油网站建设施工企业合同管理制度
  • 网站哪家公司做的最好注册个人网站的方法
  • 企业网站建设的流程台州网站建设 推广公司
  • 中文网站后台网站建站网站开发
  • 网站建网站建设公司北京seo招聘网
  • 网站 关键词 出现频率做视频网站 带宽
  • 大学网站建设与管理职责外贸营销网站建设公司排名
  • 网站做微信小程序号码网页制作网站教程
  • android开发环境搭建网站优化 代码优化
  • 做网站需要买服务器苏州建站推广公司
  • 阿里巴巴国际站怎么找客户合肥室内设计培训学校哪家好
  • 企业云seo需要培训才能找到工作吗