您的位置:首页 > 房产 > 建筑 > 莱芜上汽大众4s店_小程序投票系统_google国外入口_app软件开发制作公司

莱芜上汽大众4s店_小程序投票系统_google国外入口_app软件开发制作公司

2025/3/11 0:12:59 来源:https://blog.csdn.net/weixin_45934659/article/details/146075404  浏览:    关键词:莱芜上汽大众4s店_小程序投票系统_google国外入口_app软件开发制作公司
莱芜上汽大众4s店_小程序投票系统_google国外入口_app软件开发制作公司

maven

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

配置类

package com.sky.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;/*** WebSocket配置类,用于注册WebSocket的Bean*/
@Configuration
public class WebSocketConfiguration {@Beanpublic ServerEndpointExporter serverEndpointExporter() {return new ServerEndpointExporter();}}

WebSocketServer

package com.sky.websocket;import org.springframework.stereotype.Component;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;/*** WebSocket服务*/
@Component
@ServerEndpoint("/ws/{sid}")
public class WebSocketServer {//存放会话对象private static Map<String, Session> sessionMap = new HashMap();/*** 连接建立成功调用的方法*/@OnOpenpublic void onOpen(Session session, @PathParam("sid") String sid) {System.out.println("客户端:" + sid + "建立连接");sessionMap.put(sid, session);}/*** 收到客户端消息后调用的方法** @param message 客户端发送过来的消息*/@OnMessagepublic void onMessage(String message, @PathParam("sid") String sid) {System.out.println("收到来自客户端:" + sid + "的信息:" + message);}/*** 连接关闭调用的方法** @param sid*/@OnClosepublic void onClose(@PathParam("sid") String sid) {System.out.println("连接断开:" + sid);sessionMap.remove(sid);}/*** 群发** @param message*/public void sendToAllClient(String message) {Collection<Session> sessions = sessionMap.values();for (Session session : sessions) {try {//服务器向客户端发送消息session.getBasicRemote().sendText(message);} catch (Exception e) {e.printStackTrace();}}}}

来单提醒

用户下单成功后,需要第一时间通知外卖商家,通知有两种:语音弹幕 弹出提示框

消息分为两种:来单提醒 和 客户催单

在paysuccess后面加

//通过websocket向客户端推送数据  type orderId  content
Map map=new HashMap<>();
map.put("type",1);//1  表示来电提醒  2表示客户催单
map.put("orderId",ordersDB.getId());
map.put("content","订单号: "+outTradeNo);
String json= JSON.toJSONString(map);
webSocketServer.sendToAllClient(json);

客户催单

Controller层

/*
\* 客户催单
\* */
@GetMapping("/reminder/{id}")
@ApiOperation("客户催单")
public Result reminder(@PathVariable("id") Long id){orderService.reminder(id);return Result.success();
}

service层

/*\* 客户催单\* */
@Override
public void reminder(Long id) {// 根据id查询订单Orders ordersDB = orderMapper.getById(id);// 校验订单是否存在,并且状态为4if (ordersDB == null) {throw new OrderBusinessException(MessageConstant.ORDER_STATUS_ERROR);}Map map=new HashMap<>();map.put("type",2);//1表示来单提醒  2表示客户催单map.put("orderId",id);map.put("content","订单号: "+ordersDB.getId());//调用webSocket向客户端浏览器发送消息webSocketServer.sendToAllClient(JSON.toJSONString(map));}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com