Browse Source

message

master
maochaoying 2 years ago
parent
commit
5a4e4cba16
  1. 7
      src/main.js
  2. 52
      src/mock/index.js
  3. 10
      src/utils/common.js
  4. 26
      src/utils/message.js
  5. 8
      src/websocket/client.js

7
src/main.js

@ -5,6 +5,7 @@ const {
WEB_SOCKET_PORT, WEB_SOCKET_PORT,
WEB_SOCKET_SERVER_HOST, WEB_SOCKET_SERVER_HOST,
} = require("./config/config.default"); } = require("./config/config.default");
const { handleMessage } = require("./utils/message");
const WebSocket = require("ws"); const WebSocket = require("ws");
const app = require("./app/"); const app = require("./app/");
@ -33,8 +34,10 @@ wss.on("connection", function (ws) {
); );
ws.on("message", function (message) { ws.on("message", function (message) {
console.log(`[SERVER] Received:${message}`); console.log(`[SERVER] Received:${message}`);
ws.send(`server received : ${message}`, (err) => {
// 对接收来的消息进行处理分发
// 对接收来的消息进行处理分发
handleMessage(message.toString());
// 向客户端回传消息 表明已经接收到
ws.send(`server received your message`, (err) => {
if (err) { if (err) {
console.log(`[SERVER] error:${err}`); console.log(`[SERVER] error:${err}`);
} }

52
src/mock/index.js

@ -0,0 +1,52 @@
const sensor_data = {
command: "envDataReport",
messageId: "xxxxx-xxxxx-xxxxx-xxxxx",
timestamp: 231245, //unix时间戳ms
positionM: 0.0, //横向距离
env: [
{
mac: "00:28:f8:6f:a3:92",
position_index: 11,
vehicle_index: 1,
co2: 500.0,
temperature: 24.0,
humidity: 50,
},
{
mac: "01:xx:xx:xx:xx:xx",
position_index: 12,
vehicle_index: 1,
co2: 500.0,
temperature: 24.0,
humidity: 50,
},
{
mac: "xx:xx:xx:xx:xx:xx",
position_index: 13,
vehicle_index: 1,
co2: 500.0,
temperature: 24.0,
humidity: 50,
},
{
mac: "xx:xx:xx:xx:xx:xx",
position_index: 14,
vehicle_index: 1,
co2: 500.0,
temperature: 24.0,
humidity: 50,
},
],
};
const feed_data = {
command: "feedingEventReport",
messageId: "xxxxx-xxxxx-xxxxx-xxxxx",
eventType: "startFeeding/pauseFeeding/resumeFeeding/stopFeeding",
timestamp: 231245, //unix时间戳ms
};
module.exports = {
sensor_data,
feed_data,
};

10
src/utils/common.js

@ -32,6 +32,16 @@ function isIntTime() {
return false; return false;
} }
function isJsonString(str) {
try {
if (typeof JSON.parse(str) == "object") {
return true;
}
} catch (e) {
return false;
}
}
// 判断两数组是否有相同元素, true: 存在相同 false:没相同 // 判断两数组是否有相同元素, true: 存在相同 false:没相同
function haveSame(arr, otherArr) { function haveSame(arr, otherArr) {
// 合并数组 // 合并数组

26
src/utils/message.js

@ -0,0 +1,26 @@
const { isJsonString } = require("./common");
const handleSensorMessage = (message) => {};
const handleFeedMessage = (message) => {};
const handleMessage = (message) => {
// 对message进行处理并分发到handleSensorMessage / handleFeedMessage
if (!isJsonString(message)) {
return;
}
const messageJson = JSON.parse(message);
const command = messageJson?.command;
switch (command) {
case "feedingEventReport":
handleFeedMessage(messageJson);
break;
case "envDataReport":
handleSensorMessage(messageJson);
break;
default:
return;
}
};
module.exports = {
handleMessage,
};

8
src/websocket/client.js

@ -1,4 +1,5 @@
const WebSocket = require("ws"); const WebSocket = require("ws");
const { sensor_data, feed_data } = require("../mock");
const { const {
WEB_SOCKET_PORT, WEB_SOCKET_PORT,
@ -9,12 +10,7 @@ let ws = new WebSocket(`ws://${WEB_SOCKET_SERVER_HOST}:${WEB_SOCKET_PORT}`);
// 打开WebSocket连接后立刻发送一条消息: // 打开WebSocket连接后立刻发送一条消息:
ws.on("open", function () { ws.on("open", function () {
console.log(`[CLIENT] open()`);
ws.send(
JSON.stringify({
a: 1,
})
);
ws.send(JSON.stringify(feed_data));
}); });
// 响应收到的消息: // 响应收到的消息:

Loading…
Cancel
Save