【发布时间】:2020-03-24 15:32:28
【问题描述】:
我想回答新的 javascript、react、react-native 和 node 问题。那么,我如何知道用户在这些领域提出的新问题?
【问题讨论】:
-
您的意思是,直接在网站上或通过您正在开发的使用 Stack Exchange API 的应用程序?
标签: javascript node.js reactjs react-native stackexchange-api
我想回答新的 javascript、react、react-native 和 node 问题。那么,我如何知道用户在这些领域提出的新问题?
【问题讨论】:
标签: javascript node.js reactjs react-native stackexchange-api
打开到wss://qa.sockets.stackexchange.com/ 的Websocket 连接,然后发送消息1-questions-newest-tag-TAG,其中TAG 是您要监视的标签。这是现场直播:
const socket = new WebSocket('wss://qa.sockets.stackexchange.com/');
socket.onopen = () => {
socket.send('1-questions-newest-tag-javascript');
socket.send('1-questions-newest-tag-java');
socket.send('1-questions-newest-tag-python');
socket.send('1-questions-newest-tag-php');
console.log('Listening...');
};
const seenQuestions = new Set();
socket.onmessage = ({ data }) => {
const obj = JSON.parse(data);
if (obj.action === 'hb') {
socket.send('pong');
return;
}
const { id, body } = JSON.parse(obj.data);
if (seenQuestions.has(id)) {
// Duplicate question, a message for it has already been handled:
return;
}
seenQuestions.add(id);
console.log('New question:', id);
document.body.insertAdjacentHTML('beforeend', body);
};
socket.onerror = console.error; // just in case
<!-- Makes the inserted questions look a bit prettier: -->
<link rel="stylesheet" type="text/css" href="https://cdn.sstatic.net/Sites/stackoverflow/primary.css?v=d385c34dc2d7">
您确实需要收听hb 消息并回复它,以便 StackExchange 知道保持连接处于活动状态。
请注意,套接字将为正在侦听的 每个 标记发送给定问题的数据。例如,如果某事物同时使用 Javascript 和 React 进行了标记,并且您已经发送了侦听这两个标记的请求,您将收到该 两次 的消息,因此需要使用 Set 来避免列出重复。
【讨论】: