ソケット接続を使用して別のアプリケーションと通信する必要があるWebアプリを構築しています。これは私にとって新しい領域なので、 sockets が websockets と異なることを確認してください。概念的には似ているだけのようです。
最初はDjangoをプロジェクトの基盤として使用する予定でしたが、上記にリンクしたSO投稿では、websocketが不可能であることを非常に明確にしているため(または少なくとも信頼できない(Django-websocketsのようなものであっても)優先Djangoセットアップ(mod_wsgiを使用したApache)を使用します。しかし、私は サーバーのホスト名を取得する のような単純なもののためにPythonのソケットモジュールを偶然インポートする他の投稿を見つけました。
そう:
質問に答えるため。
Websocketは実装でソケットを使用します。 Websocketは、接続「ハンドシェイク」とメッセージ「フレーム」を定義する標準プロトコル(現在は最終呼び出しですが、まだ最終ではありません)に基づいています。両側は、ハンドシェイク手順を実行して相互に接続を受け入れ、標準のメッセージ形式(「フレーム」)を使用してメッセージをやり取りします。
私は、インストールされたソフトウェアを使用してマシン間で直接通信できるようにするフレームワークを開発しています。目的に合うかもしれません。必要に応じて私のブログをフォローできます: http://highlevellogic.blogspot.com/2011/09/websocket-server-demonstration_26.html
通常のブラウザアプリケーションは純粋なTCPソケットを開くことができないため、WebSockets(またはsome同様のプロトコルモジュール、たとえばFlashプラグインでサポートされているプロトコルモジュール)を使用する必要があります。
Socket.IO
node.js
で利用可能なモジュールは大いに役立ちますが、それはnotそれ自体が純粋なWebSocketモジュールであることに注意してください。
実際には、WebSocketやFlashソケットを含む他のさまざまなネットワークプロトコルのon /を実行できる、より一般的な通信モジュールです。
したがって、サーバーエンドでSocket.IO
を使用する場合は、クライアントコードとオブジェクトも使用する必要があります。メッセージプロトコルをエミュレートする必要があるので、socket.io
サーバーへのWebSocket
接続を簡単に作成することはできません。
WebSocketは、HTTPと同様に、TCPプロトコルを介した単なるアプリケーションレベルのプロトコルです。
以下に引用するスニペット<Spring in Action 4>は、WebSocketをよりよく理解するのに役立つことを願っています。
最も簡単な形式では、WebSocketはjust 2つのアプリケーション間の通信チャネルです(必ずしもブラウザが関与しているとは限りません)。 WebSocket通信は、あらゆる種類のアプリケーション間で使用できますが、WebSocketの最も一般的な使用方法は、サーバーアプリケーションとブラウザベースのアプリケーション。
あなたの質問(b)については、Websocketの仕様が最終決定されていないことに注意してください。 W3C によると:
実装者は、この仕様が安定していないことに注意する必要があります。
個人的には、WebsocketはEdgeを出血させすぎて現在使用できないと考えています。私はおそらくそれらを1年かそこらで役に立つと思うでしょうが。
「WebSocket」という名前のせいにします。それらは多くの点で異なっています。彼らがした唯一の一般的なことは、両方ともネットワーク通信を行うことです。
pythonのsockets
はBSDソケット実装の単なるライブラリであり、TCP/IPに関連する接続を作成できます。 WebSocketは既存のHTTPプロトコルに基づいて構築され、HTTPで二重接続を確立する簡単な方法がないため、WebSocketプロトコルへの接続を「アップグレード」します。