PDA

View Full Version : LightStreamer



tinhdoinghesi
02-11-2010, 19:27
e mới nghe nói về công nghệ LightStreamer này. có bác cao thủ nào biết về nó rồi, nói sơ qua cho e biết đc ko?

littleNeo
03-11-2010, 01:18
LightStreamer sử dụng "HTTP Server Push" hay còn gọi là "HTTP Streaming" bạn Google sẽ thấy 1 số bài viết về cái này.

LightStreamer nó dùng 1 hidden iFrame để duy trì 1 persistence connection đến server. Phía server có 1 forever loop để push data về cho browser và trang web sử dụng HTTP Server Push với iFrame này sẽ trong tình trạng loading forever, bạn để ý thì sẽ thấy trang Demo của LightStreamer ko bao giờ load xong cả.

Còn đây là demo HTTP Server Push mình viết bằng MVC2. Mở bằng Visual Studo 2010 nhé.
http://svn2.assembla.com/svn/im_kane/HTTPServerPush.zip

Good luck, Have fun :punk:

tinhdoinghesi
03-11-2010, 15:15
tks bác. e cài VS 2010 lên để nghiên cứu cái ví dụ của bác đã.

fsviet
04-11-2010, 01:43
tui không cho rằng nó sử dụng iframe

littleNeo
04-11-2010, 01:53
tui không cho rằng nó sử dụng iframe

Dùng Google Chrome's Developer tool để inspect thì sẽ thấy 1 hidden iframe trong trang sử dụng LightStreamer. View Source ko thấy đâu

fsviet
04-11-2010, 12:03
hif thees firebug trong FF có dc kô nhở.
Mà wái nhểi cái sample của u nhìn nó way way mãi. Còn bọn LS thì kô
Ngày xưa tui cũng làm 1 cái sample. Nhưng theo kiểu websocket, chứ kô dùng kiểu iframe

[=========> Bổ sung bài viết <=========]

PS: websocket chỉ chạy trên FF :D trên IE9 hình như vẫn chưa hỗ trợ

littleNeo
04-11-2010, 13:40
Mình chạy cả IE, FireFox và Chrome thì chả trang HTML Demo nào của LS nó load xong cả (nghĩa là nó cứ quay quay hòai ấy).

Về Inspect thì Browser nào cũng có tool, IE's Developer Tool, Chrome's Developer Tool hay FireBug, dùng gì tùy ý.

Hiện nay thì chỉ có iFrame là chạy được trên nhiều Browser. mấy cái khác thì mỗi thằng support 1 kiểu hoặc ko support. HTML 5 WebSocket thì mới quá, Spec của nó chỉ mới là Draft thôi.

Ngòai ra còn 1 cách nữa là dùng XmlHttpRequest ở đây http://www.subbu.org/blog/2006/04/dissecting-ajax-server-push#pushDemo
Nhưng chỉ chạy trên FF, Chrome cũng dead

fsviet
04-11-2010, 14:05
thế mới nói cái lúc làm xong chỉ chạy dc mỗi trên FF nên ngừng kô chơi nữa. Mà toàn cái to thế này, thì fải cỡ các bác làm chứng khoán mới ăn dc.
Mà h code ra dc cái push srv support tầm 1k CCU là cũng đuối nhở

littleNeo
04-11-2010, 14:23
thế mới nói cái lúc làm xong chỉ chạy dc mỗi trên FF nên ngừng kô chơi nữa. Mà toàn cái to thế này, thì fải cỡ các bác làm chứng khoán mới ăn dc.
Mà h code ra dc cái push srv support tầm 1k CCU là cũng đuối nhở

Hehe :punk:, right, LS thực ra là cả 1 cái Server process ở giữa client và WebApp, ko chỉ đơn thuần là HTTP Server Push. Ko có LS, Web server chơi trực tiếp HTTP Server Push thì vài chục User cũng đã thở ra khói. Apache Worker mode default cũng chỉ đến 150 client là maximum

tinhdoinghesi
15-11-2010, 22:09
e thấy, thằng LS nó làm riêng 1 server để đẩy dữ liệu lên, nếu nói như bác
littleNeo là dùng iframe thì có vẻ ko đúng lắm. nó quay quay mãi thế thì làm ăn j. thằng Ls bán 60$ cho 1 kết nối client.

littleNeo
16-11-2010, 11:33
e thấy, thằng LS nó làm riêng 1 server để đẩy dữ liệu lên, nếu nói như bác
littleNeo là dùng iframe thì có vẻ ko đúng lắm. nó quay quay mãi thế thì làm ăn j. thằng Ls bán 60$ cho 1 kết nối client.

Hiện nay thì real Server Push ko có nhiều kỹ thuật. cho HTML thì dùng iFrame là tương thích tốt nhất. Sở dĩ LS nó làm thành 1 server riêng mục đích chủ yếu là control các concurrent user vì Web Server ko chịu nổi việc duy trì nhiều Dedicated connection như vậy, nó chỉ đóng vai trò gần như 1 proxy, kỹ thuật phía Web cũng như bình thường thôi. Thật sự thì phía Browser ko biết rằng đang connect vào Web Server thông qua LS Server.

Vì sao có hiên tượng load mãi ko ngừng ? Vì bản chất của Http là Stateless, nhưng Http Server Push lại cần 1 Stateful connection để đẩy data xuống client. Connection giữa Server và Browser chỉ đóng khi Server đã gửi xong Response cho phía browser, do vậy người ta mới lợi dụng iFrame để request 1 trang Web chứa vòng lặp vô tận để push data, khi phía server-side chưa finalize và tiếp tục đẩy thông tin về thì phía browser sẽ tiếp tục chờ và nhận thông tin và nó sẽ quay mãi. Ngay cả các trang HTML Demo của LS cũng rơi vào tình trạng này, nhưng bạn vẫn tương tác bình thường với nó, đó là vì iFrame được tạo ra sau khi trang Web đã render xong phần chính của nó.

Bạn thử chạy Ví dụ của mình, chạy lát hồi Server crash chết queo, đó là lý do tại sao cần có LS Server ở giữa.

Muốn thấy cái iFrame thì lấy Inspection Tool mà xem sẽ thấy cái iFrame trong đó.

tinhdoinghesi
09-12-2010, 15:39
bác demo cho e để làm con server push giống LS server đc ko?

fsviet
09-12-2010, 16:50
lại đòi đi làm bánh xe roài. Thử code 1 cái web srv simple đi rồi tính chuyện làm push srv

littleNeo
09-12-2010, 18:02
bác demo cho e để làm con server push giống LS server đc ko?

Tớ chả rãnh. Bác Google 1 số keyword: Comet, Polling Duplex, Ajax Polling. Silverlight thì có WCF PollingDuplex service.

Ngòai ra có 1 số Server dạng như LS với free license (BSD, MIT, Apache, GPL...) http://cometdaily.com/maturity.html <- check

LS đâu phải là thứ duy nhất làm Server Push

asb_mylove
23-03-2011, 21:17
em bây giờ cũng phải đụng tới nó, hic hic, ko biết bắt đầu từ đâu đây ....