几周前,我使用 Twitter 的数据启动了一个 spring-force 节点图项目。 它变得很复杂,我决定视频是展示它的最佳方式。 但是,视频又长又无聊。 这是早期的快照。
Half-baked ideaHalf-baked ideaHalf-baked ideaHalf-baked idea半生不熟的想法
在《华夫饼周日》上,我请几位家庭成员进行审查并提出如何改进的建议。 他们都提出了很好的评论,但丹尼尔真的想向我展示一些东西。 我一直在拖延他,直到我开始意识到我的视频并没有那么神奇。
“好吧,丹尼尔。 你有什么?”
“去谷歌搜索一下听听维基百科”。
那将带你去http://listen.hatnote.com/ 。 我看了(并听了)几分钟,想知道它是如何工作的……我做出了一些错误的猜测。 然后我点击了关于链接并按照我的方式进行hatnote 的 JavaScript 代码大约第 123 行我开始了解WebSockets它们让浏览器保持对 Web 服务器开放的双向端口,到 2022 年,大多数浏览器都会支持它们。 当您查看 Listen to Wikipedia 页面时,浏览器中运行的 JavaScript 正在侦听 wikipedia WebSocket 并获取即时有关维基百科更新的通知。 文档你不需要。
Twitter 有自己的 API,不使用 WebSocket。 我制作的视频只是每五分钟轮询一次,历史性的,而不是像维基百科更新那样互动。 我想使用 WebSocket,所以我需要其他东西。
经过一番研究,我发现 stackexchange 站点组(包括 stackoverflow)有一个双向的 WebSocket。 WebSocket 可以订阅所有新帖子,然后订阅和取消订阅这些帖子的更新。 (大约。 我用了一个 stackexchange 帖子据我所知,很明显,出现的帖子可能不是新的。)
我可以使用 JSL 做什么? WebSocket 是浏览器的东西。 经过一番搜索,我找到了一个Python WebSocket包。 Python 代码是垫片JSL 和 WebSocket 之间。 我很确定这一切都可以在 JSL 中完成,但有一些丑陋的部分我不想处理......所以 Python。
下面的 JSL 中有少量通用的 WebSocket 代码和大量 stackexchange 特定的代码。 如果您构建一个类似的解决方案,而不是用于 stackexchange,您可能会保留 Python 部分并仅使用其余部分作为粗略指南。 代码中有注释,由于是作为插件打包的,可以在View->add-ins中找到代码,选择WebSocket,点击目录。
启动加载项后,事情可能需要一段时间才能开始发生。 通常,每 10 秒左右就会发生一些事情,尤其是在加载项运行足够长的时间以产生大量订阅之后。 如果您在五分钟后没有看到或听到任何消息,则它可能无法正常工作...请密切关注日志窗口。 由于需要显示的数据量很大,我决定为该项目使用 1920 宽 x 1080 高的显示器。 很难缩小规模; 9X9 的问题网格需要显示说明、图标和指示符。 它们都是手工调整的,看起来不错。 字体可能也需要调整。 这是一段简短的视频,展示了运行一段时间后的样子,但运行该加载项会更有趣。 该插件适用于 Windows 和 JMP 16。 它可能可以在 Mac 上运行,但未经测试。
如果您不尝试该加载项,请观看以下视频的简短片段。
如果您正在运行该加载项,则可以单击这些项目,您的网络浏览器将带您转到该文章。
加入使用 Stackexchange 的 WebSocket 演示