WebSocketとnode.js
2255 ワード
詳細
Web技術のここ数日の発展は変革的な発展と言えるが、すでにweb 2に限られている.0のajax非同期リフレッシュのレベルになりました.個人的にはHTML 5後に本当に変革的な意義をもたらす技術は主にWebGL、ローカル操作のサポートにあると考えられているが、webの発展はクライアントだけでなく、サービス側の技術も変革しており、Websocketとnode.jsはその代表であり,webサービスのリアルタイム性と非同期性がもたらした革命はクライアントの革命に劣らない.
一般的なwebモデルはgetとpostに基づいており,すべての動作の開始点はwebページのみである.
サーバがクライアントにデータをプロアクティブにプッシュする必要がある場合はどうすればいいですか?クライアントポーリングと長接続の2つの方法があります.
クライアントポーリングはajaxが一般的に使用される前にページを頻繁にブラシして実現され、性能とユーザー体験は自然に悪く、ajaxが現れた後にjsが非同期で応答するのが幸いであるが、クライアントはサービス側のデータをキャプチャするために専門的なタイミングイベントが必要であり、性能もよくない.長い接続方式はサービス側とクライアントの協力が必要で、クライアントは長い接続を開始し、サービス側も切断することができず、通信チャネルを維持することができるが、このチャネルの存在により、要求も終了することができず、ページはずっと要求状態にあり、終了することができず、ホームページのロードプロセスに影響を与えないと思っていると、一般的に隠れたframeを追加して接続を維持する.しかし、ドメイン間で制限されます.これは根本的に問題を解決することはできません.websocketの技術が誕生しました.もちろん、まずブラウザのサポートが必要です.websocketはクライアントとサービス側の非同期通信の技術である.彼はhttpプロトコルの上に構築されています.クライアントでプログラミングするには、WebSocketオブジェクトを使用するだけで十分です.彼は3つのイベントを含む:接続を開く、メッセージが到着する、接続を閉じる、および1つのアクション:データを送信する.次のようになります.
クライアントのプログラミングは簡単です.サービスは?
Websocketプロトコルは、握手プロセスが必要であることを規定しています.
これらの基準により、サービス側で仕事を再開する必要があります.すでに多くの人がこれらを実現し、みんなに提供して使用しています.
なぜnodeに言及したの?jsは?node.jsはサービス側javascript解釈器であり、言語的にイベント駆動を簡単に実現できるほか、非同期を実現しやすいという利点がある.彼は1つのV 8エンジンの基礎の上で運行して、理論の上でこの模型は任意の言語で実現することができて、しかもすでに誰かがC++とC#の上で実現しました.
次はnodeです.jsのhelloworld:
Web技術のここ数日の発展は変革的な発展と言えるが、すでにweb 2に限られている.0のajax非同期リフレッシュのレベルになりました.個人的にはHTML 5後に本当に変革的な意義をもたらす技術は主にWebGL、ローカル操作のサポートにあると考えられているが、webの発展はクライアントだけでなく、サービス側の技術も変革しており、Websocketとnode.jsはその代表であり,webサービスのリアルタイム性と非同期性がもたらした革命はクライアントの革命に劣らない.
一般的なwebモデルはgetとpostに基づいており,すべての動作の開始点はwebページのみである.
サーバがクライアントにデータをプロアクティブにプッシュする必要がある場合はどうすればいいですか?クライアントポーリングと長接続の2つの方法があります.
クライアントポーリングはajaxが一般的に使用される前にページを頻繁にブラシして実現され、性能とユーザー体験は自然に悪く、ajaxが現れた後にjsが非同期で応答するのが幸いであるが、クライアントはサービス側のデータをキャプチャするために専門的なタイミングイベントが必要であり、性能もよくない.長い接続方式はサービス側とクライアントの協力が必要で、クライアントは長い接続を開始し、サービス側も切断することができず、通信チャネルを維持することができるが、このチャネルの存在により、要求も終了することができず、ページはずっと要求状態にあり、終了することができず、ホームページのロードプロセスに影響を与えないと思っていると、一般的に隠れたframeを追加して接続を維持する.しかし、ドメイン間で制限されます.これは根本的に問題を解決することはできません.websocketの技術が誕生しました.もちろん、まずブラウザのサポートが必要です.websocketはクライアントとサービス側の非同期通信の技術である.彼はhttpプロトコルの上に構築されています.クライアントでプログラミングするには、WebSocketオブジェクトを使用するだけで十分です.彼は3つのイベントを含む:接続を開く、メッセージが到着する、接続を閉じる、および1つのアクション:データを送信する.次のようになります.
var socket = new WebSocket("ws://localhost:80")// :websocket ws http
socket.onopen(event)
socket.send()
socket.onmessage()
socket.onclose()
クライアントのプログラミングは簡単です.サービスは?
Websocketプロトコルは、握手プロセスが必要であることを規定しています.
:
GET /call HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
Host: localhost:8080
Origin: http://localhost
Cookie: somenterCookie
:
HTTP/1.1 101 Web Socket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
WebSocket-Origin: http://localhost
WebSocket-Location: ws://localhost:8080/call
通信数は「x 00」で始まり「xFF」で終わる.具体的なデータ送受信プロセスは一般的な通信プロセスと変わらない.これらの基準により、サービス側で仕事を再開する必要があります.すでに多くの人がこれらを実現し、みんなに提供して使用しています.
なぜnodeに言及したの?jsは?node.jsはサービス側javascript解釈器であり、言語的にイベント駆動を簡単に実現できるほか、非同期を実現しやすいという利点がある.彼は1つのV 8エンジンの基礎の上で運行して、理論の上でこの模型は任意の言語で実現することができて、しかもすでに誰かがC++とC#の上で実現しました.
次はnodeです.jsのhelloworld:
var sys = require("sys"),
http = require("http");
http.createServer(function(request, response) {
response.sendHeader(200, {"Content-Type": "text/html"});
response.write("Hello World!");
response.close();
}).listen(8080);
sys.puts("running...");
webの発展情勢はやはりすばらしい.