[英]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.