私は単純な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. Python経由でWebサイトから解析されたデータのutf-8でのデコード
- 2. Websocket経由のAngular2-MQTT?
- 3. websocket経由でKemalで適切なユーザーにデータを送信
- 4. JavaScriptを読む方法BLOBデータをJava WebSocketサーバーのwebsocket経由で送信
- 5. タイマーでwebsocket経由でメッセージを送信
- 6. websocket経由で画像を受信
- 7. websocket経由でSTOMPフレームを送信
- 8. シリアル化された配列経由でデータを送信
- 9. RabbitMQ - STOMP経由でAMQP経由で作成されたアクセス/キューまたはトピック
- 10. HTTPプロキシ経由でバッファリングされたアップロード
- 11. アップロードされた曲はPHP経由で
- 12. InstallShield経由でインストールされたアップデートアプリケーション
- 13. awsネットワーク経由でブロックされたCLI
- 14. Neo4j rest API経由で送信されたデータが保持されない
- 15. $ .postデータ+シリアル化されたフォームを経由して
- 16. .net経由でシリアルポート経由でデータを引き出す
- 17. Bing Speech to Text API - C#でWebSocket経由で通信する
- 18. カウボーイとMessagePackでwebsocket経由でバイナリデータを送信
- 19. Okhttp websocketがプロキシ経由で接続できません
- 20. Websocket経由でFirefoxにビデオをストリーミングできない
- 21. MQTT WebSocket経由で接続されたAzure IoT Hubデバイスのグループにメッセージを送信できますか?
- 22. Net :: IMAP経由でフェッチされたテーマをデコードする方法はUTF8ですか? (ルビー)
- 23. データはasp.net経由でデータベースに挿入されません
- 24. Laravel:ajax経由でデータが送信されない
- 25. データがajaxコール経由でバックエンドに投稿されない
- 26. AngularJSデータがng-route経由でロードされない
- 27. file-multipart経由で送信されたファイルのデータはどこですか?
- 28. 3G経由のゲームセンター(GameKit)経由でデータを送受信する
- 29. Swagger経由でwebsocket apiを記述する
- 30. websocket経由でファイルを受信してダウンロードダイアログを開始
あなた自身でwebsocketプロトコルを実装しましたか、または多くの既存のライブラリ(どちらか)を使用しましたか? Websocketプロトコルの多くのバージョンのどれがあなたのブラウザとサーバーの間で実際に使用されていますか?あなたは最小の例を含めることができますか? –
私はchromeでテストしています。バージョン8と思われます。私はwebsocketライブラリを使用していません。デフォルトのソケットライブラリです。 –
この回答を見ると完全に動作しますhttp://stackoverflow.com/a/9778823/1193863 – naren