我正在尝试将我的 Express 应用程序连接到端点,以便我可以获取一些数据。但我做得不对。此时,我们感谢任何帮助。 这是我试图从中获取数据的网站: [1]:https://ifb.ir/OptionStockQuote.aspx
这是我的express.js代码:
app.get("/faraboorsdata", async (req, res) => {
const { data } = await axios({
method: "get",
url: "https://ifb.ir/signalr/negotiate?connectionData=%5B%7B%22name%22%3A%22myhub%22%7D%5D&_=1691911758544",
httpsAgent: httpsAgent,
});
const evtsource = new EventSource(
`https://www.ifb.ir/signalr/connect?transport=serverSentEvents&connectionToken=${data["ConnectionToken"]}&connectionData=%5B%7B%22name%22%3A%22myhub%22%7D%5D&tid=7`
);
evtsource.onopen = async (event) => {
console.log("Connection Opened!");
const { data: postData } = await axios({
method: "post",
url: `https://ifb.ir/signalr/send?transport=serverSentEvents&connectionToken=${data["ConnectionToken"]}&connectionData=%5B%7B%22name%22%3A%22myhub%22%7D%5D`,
data: {
H: "myhub",
M: "letsStartForOption",
A: [`${data["ConnectionId"]}`],
I: 0,
}
});
console.log("POST request Sent!");
};
let counter = 0;
let timeoutId = null;
evtsource.onmessage = async (event) => {
if (event.data !== "initialized") console.log(JSON.parse(event.data)["M"]);
if (event.data !== "initialized" && JSON.parse(event.data)["M"]) {
if (
JSON.parse(event.data)["M"][0]["M"] === "updateInitialOptionTable" ||
JSON.parse(event.data)["M"][0]["M"] === "updateRowForOptionStock"
) {
counter += 1;
evtsource.close();
res.json(JSON.parse(event.data));
}
}
};
req.on("close", () => {
evtsource.close();
});
});
您可以检查我发送的网站以了解它本身如何获取数据。
为什么使用事件源?尝试使用网络套接字协议来获取数据
try {
let options = {
headers: {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3419.0 Safari/537.36"
}
};
let client = new WebSocket(endpoint, options);
client.onopen = () => {
console.log("websocket open");
client.send("42" + JSON.stringify(["getRooms", false]));
};
client.onmessage = (event) => {
console.log("websocket message:", event.data);
};
client.onclose = (reason) => {
console.log("websocket close:", reason.code);
};
client.onerror = (error) => {
console.log("websocket error:", error.message);
};
} catch (error) {
console.log("connect error:", error.message);
}