JavaScript kullanarak istemci makinede bir dinleme soketi

5 Cevap php

Is that possible?

I'm writing a web-admin interface for a network-system. I need to listen to a specific UDP port and show it in browser. Can I do that in javascript? Also; any other ideas are welcomed.

early-edit: Here's another idea: I have php and perl support at server-side. JS can call a php script to start listening, which will also call a perl script, which has an endless listener loop and collects the received messages into a sink variable. In theory; JS will be polling a PHP script every 2 seconds, get the sink variable and show it on browser/html. But; how can a php script reach/read that sink variable? And, how or when will the perl script stop? For the first part, using a file as a sink is a terrible idea; I'll be receiving 10 string messages per second and also reading and then clearing file contents every 2 seconds. Not to mention the file lock mechanisms... For the second part: i should put timeout somewhere but; where?

Dinleme ne nerede edit: Evet, ben seçebilir (sunucu veya istemci).

edit2: Why do I want to listen for UDP messages on a specific port and show it on browser: The project I'm working on has some special sensors activated by some bussiness-specific-keys, these sensor devices are network-enabled and I have programmed them to send a UDP network broadcast message containing biz-key-info whenever they sense something. There are lots of these devices on same network, and the web-admin interface should have a page where user can see what is happening in real-time or almost-real-time (~5 second delay is acceptable, that is why I had the poll-every-2seconds idea at my early-edit).

Bir ActiveX bileşeni ActiveSocket ki ama;: edit3: Ben de bunu buldum Firefox üzerinde çalışmak ve html + JS parçası hakkında hiçbir belgelerine sahip değildi tahmin olarak.

5 Cevap

JavaScript doğrudan prize bağlamak için hiçbir yolu olmadığından simpelst çözüm Flash-Brigdem olacaktır.

Ben bir süre önce size tam kaynak indirebilirsiniz böyle bir şey yaptık here. Sen simpleserver.py çalıştırın (Python3 gerektirir) ve daha sonra test etmek için, localhost üzerinden index.htm erişebilirsiniz.

Ayrıca Flash'ın güvenlik modeli port 843 üzerinde bir XML-Belge istiyorsa, unutmayın, bu göndereceğiz

<policy-file-request/>

to the socket. You then should respond with something like:

<?xml version="1.0"?><cross-domain-policy>
		<allow-access-from domain="*" to-ports="*" />
		</cross-domain-policy>

Port 843 üzerinde çalışan herhangi bir şey yoksa size bağlanmak için trtying olan bağlantı noktasına aynı isteği gönderir. Ama 843 İstek zaman aşımına uğradı sonra.

Orada bazı diğer güvenlik "özellikleri", ancak, Adobe dokümanlar hakkında okuyabilirsiniz.

muhtemelen gizli bir flaş. swf ve bazı yapıştırıcı kodu kullanarak bu yapabilirdi. Saf javascript ile hiçbir şekilde

Which computer will listen ? your server or the client that runs the web browser ? Can you choose ?

Dinleme sunucu üzerinde yapılabilir, bu kolay bir PHP web sayfasından dinlemek için, ama bu eşzamanlı değildir, bu nedenle kullanıcı çok hızlı F5 biraz vurursa, sadece 1 php süreç aynı anda dinleyebilirsiniz ve çalışmaz.

Eğer ayrıca bir HTTP sunucusu (kod 10 satır alır, gerekli modülü almak) ve PHP bunu sormak için basit bir HTTP isteği ile kendisine bağlanan olursa olsun dili (Perl, Python) bir dinleyici cini yaratmak, dediğim gibi başka çözüm oldu son şeyler için. Bu kısa eğer Daemon sadece ihtiyacınız kadar geçmişini tutmak gerekiyor, basit bir dizi koymak.

Javascript Kod prizlere erişimi yoktur. Eh neredeyse ActiveX kullanarak IE6 çalışmak için bir şey almak mümkün olmalı ama sadece platformu hakkında kodunuzu hiç çalışacaktır.

Hayır, JavaScript yuva dinleyemezsiniz.

Bir betik dili kullanarak ve ardından veriler için yoklama da gelince, bu mümkün, ancak uzun yoklama kurulum bu tür sıradışı. Neden bu şekilde bir şeyler yapmak istiyor musunuz? Özellikle, neden özellikle bağlantı noktalarında trafiği dinlemek ve bir web tarayıcısında görüntülemek gerekiyor? Eğer browser çalıştığı makine üzerinde ağ trafiğini kontrol etmek isteyen, ya da ayrı makinelerde tarayıcı ve komut vardır? Tipik bir web-admin kurulum ben soruyu sormak neden remote yönetimi için kullanılır.

Orada hedefinizi gerçekleştirmek için daha iyi bir yol olabilir, ama yazmak için çalışıyoruz uygulama hakkında biraz daha fazla genel bilgi olmadan söylemek zor olabilir.