首頁>技術>

最近在接觸goaccess 視覺化Nginx的log,遇到一個問題: 如何在瀏覽器中實時展示Nginx的請求?

將access log實時輸出到指定位置,其中

goaccess /usr/local/nginx/logs/access.log -o /opt/goaccess/html/out.html --real-time-html --time-format='%H:%M:%S'  --date-format='%d/%b/%Y' --log-format=COMBINED --port=7000 --daemonize

實時資料更新是 瀏覽器和goaccess的WebSocket連接獲取。

WebSocket 使得實時監控伺服器,簡直是輕而易舉

WebSocket 是一種網路通訊協議,很多高階功能都需要它。

初次接觸 WebSocket 的人,都會問同樣的問題:我們已經有了 HTTP 協議,為什麼還需要另一個協議?它能帶來什麼好處?

答案很簡單,因為 HTTP 協議有一個缺陷:通訊只能由客戶端發起。

舉例來說,我們想了解今天的天氣,只能是客戶端向伺服器發出請求,伺服器返回查詢結果。HTTP 協議做不到伺服器主動向客戶端推送資訊。

這種單向請求的特點,註定瞭如果伺服器有連續的狀態變化,客戶端要獲知就非常麻煩。我們只能使用"輪詢":每隔一段時候,就發出一個詢問,瞭解伺服器有沒有新的資訊。最典型的場景就是聊天室。

輪詢的效率低,非常浪費資源(因為必須不停連線,或者 HTTP 連線始終開啟)。因此,工程師們一直在思考,有沒有更好的方法。WebSocket 就是這樣發明的。

順便膜拜一下 五行程式碼實現一個最簡單的聊天工具 ,該git hub專案竟然雖然只有5行程式碼,但是start已經18K.

#!/bin/bash # Copyright 2013 Jeroen Janssens# All rights reserved.# Use of this source code is governed by a BSD-style# license that can be found in the LICENSE file. # Run a simple chat server: websocketd --devconsole --port 8080 ./chat.sh## Please note that this example requires GNU tail, which is not the default# tail on OS X. Even though this script properly escapes the variables,# please keep in mind that it is in general a bad idea to read# untrusted data into variables and pass this onto the command line. echo "Please enter your name:"; read USERecho "[$(date)] ${USER} joined the chat" >> chat.logecho "[$(date)] Welcome to the chat ${USER}!"tail -n 0 -f chat.log --pid=$$ | grep --line-buffered -v "] ${USER}>" &while read MSG; do echo "[$(date)] ${USER}> ${MSG}" >> chat.log; done

原文連結:https://blog.csdn.net/MyySophia/article/details/106219310

5
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • chrome 開發者工具——前端實用功能總結