Bootstrap

苍穹外卖本地测试WebSocket连接不上,来点提醒/客户催单功能失效解决办法

1. 查看nginx.conf配置文件

确保webservers指定的服务器端口号是正确的
在这里插入图片描述在这里插入图片描述

2.修改nginx/html/app.js

如果你访问ws这个url status错误,那么大概率是因为8080端口没有配置,(tomcat默认占用8080),ctrl+f把这里修改了

在这里插入图片描述
在这里插入图片描述

如果程序还有错误:以下几个地方需要注意

1.是否导入WebSocket配置类,注册WebSocket是否添加了@Configuration注解 方法是否添加@Bean注解
在这里插入图片描述
2.是否导入了WebSocket服务,WebSocketServer也是需要导入的,注意需要添加@Component和@ServerEndpoint(“/ws/{sid}”)注解,指定后缀名,具体源代码如下

package com.sky.websocket;
/**
 * WebSocket服务
 */
@Component
@ServerEndpoint("/ws/{sid}")
public class WebSocketServer {

    //存放会话对象
    private static Map<String, Session> sessionMap = new HashMap();

    /**
     * 连接建立成功调用的方法
     */
    @OnOpen
    public void onOpen(Session session, @PathParam("sid") String sid) {
        System.out.println("客户端:" + sid + "建立连接");
        sessionMap.put(sid, session);
    }

    /**
     * 收到客户端消息后调用的方法
     *
     * @param message 客户端发送过来的消息
     */
    @OnMessage
    public void onMessage(String message, @PathParam("sid") String sid) {
        System.out.println("收到来自客户端:" + sid + "的信息:" + message);
    }

    /**
     * 连接关闭调用的方法
     *
     * @param sid
     */
    @OnClose
    public 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();
            }
        }
    }

}

3.检查代码逻辑,比如调用支付成功接口后是否调用了来点提醒/客户催单后Mapping路径是否正确
在这里插入图片描述

在这里插入图片描述
4.如果后端没问题,是否动了小程序前端的代码,理解前端代码也是十分重要的

/***/ 27:
      /*!****************************************************************!*\
  !*** D:/project/project-rjwm-weixin-uniapp/utils/webscoket.js ***!
  \****************************************************************/
      /*! no static exports found */
      /***/ function (module, exports, __webpack_require__) {
        "use strict";
        /* WEBPACK VAR INJECTION */ (function (uni) {
          Object.defineProperty(exports, "__esModule", { value: true });
          exports.default = initWebScoket;
          var _stomp = __webpack_require__(/*! ./stomp */ 28);
          var _store = _interopRequireDefault(
            __webpack_require__(/*! ./../store */ 12)
          );
          function _interopRequireDefault(obj) {
            return obj && obj.__esModule ? obj : { default: obj };
          }

          function initWebScoket(params) {
            var socketOpen = false;
            var socketMsgQueue = [];
            var ws = {
              send: sendSocketMessage,
              onopen: null,
              onmessage: null,
            };

            function sendSocketMessage(msg) {
              if (socketOpen) {
                uni.sendSocketMessage({ data: msg });
                console.log("信息已发送:" + msg);
              } else {
                socketMsgQueue.push(msg);
              }
            }

            uni.connectSocket({
              url: "wss://socket-canzg.itheima.net/ws",
            });

            uni.onSocketOpen(function (res) {
              socketOpen = true;
              console.log("WebSocket连接已打开!");
              for (var i = 0; i < socketMsgQueue.length; i++) {
                sendSocketMessage(socketMsgQueue[i]);
              }
              socketMsgQueue = [];
              ws.onopen && ws.onopen();
            });

            uni.onSocketError(function (res) {
              console.log("WebSocket连接打开失败,请检查!");
            });

            uni.onSocketMessage(function (res) {
              console.log("收到服务器内容:", res);
              ws.onmessage && ws.onmessage(res);
            });

            uni.onSocketClose(function (res) {
              console.log("WebSocket 已关闭!");
            });

            var client = _stomp.Stomp.over(ws);

            var destination = "/exchange/micro_app_exchange/".concat(
              params.tableId
            );
            client.connect("guest", "guest", function (sessionId) {
              console.log("sessionId", sessionId);
              client.subscribe(destination, function (body, headers) {
                console.log("From MQ:", JSON.parse(body.body));
                _store.default.commit("initdishListMut", JSON.parse(body.body));
              });
            });
          }
          /* WEBPACK VAR INJECTION */
        }.call(
          this,
          __webpack_require__(
            /*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1
          )["default"]
        ));

        /***/
      },

    /***/ 28:
;