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: