幾週前,我使用 Twitter 的數據啟動了一個 spring-force 節點圖項目。 它變得很複雜,我決定視頻是展示它的最佳方式。 但是,視頻又長又無聊。 這是早期的快照。
Half-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 演示