4 Stimmen

Portierung von node.js Server-seitigem Code auf HTML5 WebSockets

Hinweis: Hier geht es nicht darum, sowohl node.js als auch HTML5-Sockets zu verwenden. Ich bin auch nicht daran interessiert, die Vorzüge der Einrichtung, die ich beschreibe, zu diskutieren.

node.js läuft auf dem Server, und da es Verbindungen über Sockets unterstützt als Kunde Die WebSockets können als Zwischenschicht zwischen einem HTML5/JS-Client und einem Server fungieren, der TCP/IP verwendet (z. B. ein Datenbankserver). Sowohl node.js als auch WebSockets bieten also Möglichkeiten zum Öffnen von Socket-Verbindungen zu einem Server.

Meine Frage ist, hat jemand erfolgreich ein node.js-Skript auf WebSockets portiert, d.h., schneiden Sie node.js aus der Gleichung, so dass Ihr Webbrowser direkt mit der Datenbank verbindet? Ich stelle mir vor, dass es so aussehen würde:

  1. alles, was mit HTTP zu tun hat, weglassen
  2. Portierung der Verwendung aller node.js-spezifischen Funktionen auf die WebSockets-API

Wenn dies getan wurde, war es eine Menge Ärger oder waren die node.js und WebSockets APIs relativ ähnlich?

4voto

kanaka Punkte 66799

Ihre Frage ist etwas schwer zu beantworten, aber ich werde es versuchen.

Wenn Sie daran interessiert sind, eine Verbindung von einem WebSockets-Client (Browser) zu einem beliebigen TCP-Socket-Server herzustellen, dann könnten Sie sich für folgende Themen interessieren wsproxy der ein allgemeiner WebSockets-zu-TCP-Sockets-Proxy ist. wsproxy ist in der noVNC (HTML5 VNC-Client) und hat drei Referenzimplementierungen in C, Python und Node (node.js).

Wenn Sie daran interessiert sind, WebSockets-Unterstützung zu einem bestimmten Server (z. B. dem Datenbankserver) hinzuzufügen, dann finden Sie vielleicht dieser Fork von libvncserver . Es unterstützt Clients, die WebSockets sprechen (d.h. noVNC), so dass kein Proxy benötigt wird.

Die grundlegende Proxy-Funktionalität von wsproxy war ziemlich einfach zu implementieren. Der kniffligste Teil ist, dass der aktuelle WebSockets-Entwurf (v76) keine binäre Übertragungsnutzlast (nur UTF-8) spezifiziert, so dass wsproxy base64 den gesamten Verkehr zum/vom WebSockets-Client kodiert/dekodiert. Die Implementierung von WebSockets-Verbindungen in libvncserver war etwas kniffliger, da libvncserver einige ziemlich hart kodierte Vorstellungen über Pufferung/Rahmenbildung hat, die umgangen werden mussten.

Haftungsausschluss: Ich bin verantwortlich für noVNC, wsproxy und die WebSockets-Patches für libvncserver.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X