簡體   English   中英

需要使用node.js將簡單的數據推送到瀏覽器

[英]Need simple data push to browser using node.js

在服務器端,我使用node.js進行一些分布式異步乒乓球。 現在,我需要在客戶端瀏覽器中將結果顯示為實時圖表。 為簡單起見,我目前使用基於圖像的Google圖表URL並限制要繪制的數據量。 最終,這個客戶端展示塊將變得豐富而互動。

我了解,我的服務器將數據推送到瀏覽器的一種方式是Comet。 我希望瀏覽器端必須有一個相應的套接字(socket)之類的東西,所以兩者應該一起使用。

問題1:對於原型:將字符串數據從node.js推送到Firefox 3.6.10瀏覽器的最簡單方法是什么? 字符串每秒更新少於1KB。

問題2:對於生產:對於在所有瀏覽器(包括移動設備)上都可以使用的方法有何建議? 二進制更新順序為每秒100KB,無圖像或視頻。

我真的建議您看一下http://socket.io/上的Node.js。 它可在移動設備上運行,並利用瀏覽器可用的最佳選項來支持您所需的彗星效果的多種方法。

盡管它確實缺少通道,但它也非常簡單,但是使用socket.broadcast(msg, [array containing every user except those 'subscribed'])是一種簡單的解決方法。

服務器每兩秒鍾在[0,100]中生成一個隨機數r1,然后向客戶端發送消息以繪制一個r1和r2 = 100-r1的餅圖。 尚未實施建議針對多個客戶的廣播。 任何其他改進建議都歡迎您。

服務器端(在coffescript中):

http = require('http')
io = require('socket.io')

server = http.createServer( )

server.listen(8000)

socket = io.listen(server)

myrand = (client) -> setInterval( -> 
    r1 = Math.floor(Math.random()*101)
    r2 = 100-r1
    client.send(String(r1) + ',' + String(r2))
, 2000)

socket.on('connection', (client) -> myrand(client))

客戶端(帶有JavaScript的index.html):

<h1>My socket client</h1>

<script src="http://cdn.socket.io/stable/socket.io.js"></script>

<div id="piechart">
Hello World
</div>

<script>
socket = new io.Socket('localhost:8000');
socket.connect();
socket.on('message', function(data){
    url = 'http://chart.apis.google.com/chart?cht=p3&chs=250x100&chd=t:' + data + '&chl=Hello|World';  
    document.getElementById('piechart').innerHTML = "<img src="+ url + "></img>";
});
</script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM