私は単純なPython Websocketサーバーを構築しようとしています。私はハンドシェイクとそのすべてのことをすることができました。しかし、私はブラウザから受け取ったメッセージをどのようにデコードするのか分かりませんが、これはサーバが受け取るものの生の出力です:'xÙõKþ°pãüCY
。どのように私はそれを解読するはずですか?websocket経由でデコードされたデータ
答えて
WebSocketプロトコルには、framing protocolが含まれています。ブラウザは生のアプリケーションバイトをサーバーに送信するだけではなく、その逆もあります。生のバイトを抽出するためにフレーミングプロトコルを解析する必要があります。
この解析を行うために、多くのライブラリが実装されています。おそらくそのうちの1つを試してみてください。そのようなライブラリの1つはhttp://pypi.python.org/pypi/txWS/0.6.1ですが、それが適切でない場合は、少しの検索で他のものを見つけることができます。
クライアントから送信するメッセージは何ですか?そして、Chrome 8を使用していることを確認してください(7バージョンは古くなっています)。実際に最近のChromeを使用している場合は、ペイロードのマスクを解除できなかった可能性があります。最新のバージョンのプロトコル(HyBiシリーズ)のすべてのクライアントからサーバーへのデータは、4バイトのXORマスクを使用して、壊れた仲介者が悪意のあるJavascriptによってハイジャックされるのを防ぎます。
クライアントからサーバーへのペイロードマスキングについては、section 5.3 of the specを参照してください。
また、ペイロードデータはUTF-8でエンコードされていることに注意してください(古いプロトコルでも)。ASCII文字列として扱うことはできません。
メッセージは単純な「Hello World!」です。私はWebsocketバージョンが8であることを意味していました(ブラウザがハンドシェイク中にSec-WebSocket-Version:8を送信します)。ペイロードのマスキング解除については、すべてのバージョンで同じように動作しますか? –
次に、ペイロードのマスクを解除する必要があります。ペイロードの最初の4バイトはマスクです。これらは、以下のペイロードストリームとXORされる必要があります。導入されて以来、マスキングフォーマットは変更されていません。 – kanaka
- 1. タイマーでwebsocket経由でメッセージを送信
- 2. websocket経由で画像を受信
- 3. HTTPプロキシ経由でバッファリングされたアップロード
- 4. アップロードされた曲はPHP経由で
- 5. $ .postデータ+シリアル化されたフォームを経由して
- 6. カウボーイとMessagePackでwebsocket経由でバイナリデータを送信
- 7. .net経由でシリアルポート経由でデータを引き出す
- 8. データはasp.net経由でデータベースに挿入されません
- 9. C++を使用してwebsocket経由でデータを送信するにはどうすればよいですか?
- 10. websocket経由でファイルを受信してダウンロードダイアログを開始
- 11. WebSocket経由でバイトデータを送信する(JavaScript)
- 12. Net :: IMAP経由でフェッチされたテーマをデコードする方法はUTF8ですか? (ルビー)
- 13. 3G経由のゲームセンター(GameKit)経由でデータを送受信する
- 14. JavaでWebSocketからメッセージをデコードする
- 15. webqockets経由でクライアントに送信されたデータからjqgridを再入力
- 16. PHPアプリケーション+ Socket.IO経由のWebSocketベースの通知
- 17. Tyrus wss:// websocketがsquidプロキシを経由しない
- 18. リクエストヘッダ経由のデータ送信とリクエスト本体経由のデータ送信
- 19. シリアルポート経由でデータを送信する
- 20. シリアルポート経由でデータを送信
- 21. Linq2SQL経由で階層データを選択
- 22. シングルページアプリケーションでJSON経由で送信された日付のプレゼンテーション
- 23. プロセスXMLはE4XでAjax経由で返されましたか?
- 24. jQueryでAJAX経由でロードされたテキストのプレイングとアニメーション
- 25. SSL経由で取得されたデータは、クライアントブラウザによってキャッシュされますか?
- 26. XElement経由でデータにバインドされたXMLデータを含むTreeViewの更新に関する問題
- 27. 基本クラス変数経由でアクセスされた保護メンバー
- 28. Reflection経由で呼び出されたクラスライブラリのDispatcherUnhandledException
- 29. SQLデプロイされたデータベースをインターネット経由で接続する
- 30. ファイルパス経由で保護されたサーバにimgを配信
あなた自身でwebsocketプロトコルを実装しましたか、または多くの既存のライブラリ(どちらか)を使用しましたか? Websocketプロトコルの多くのバージョンのどれがあなたのブラウザとサーバーの間で実際に使用されていますか?あなたは最小の例を含めることができますか? –
私はchromeでテストしています。バージョン8と思われます。私はwebsocketライブラリを使用していません。デフォルトのソケットライブラリです。 –
この回答を見ると完全に動作しますhttp://stackoverflow.com/a/9778823/1193863 – naren