2012-07-25 16 views
19

वेबसाकेट की सफलता हैंडशेक के बाद, क्या हम gzip संपीड़न का उपयोग कर सकते थे?वेबसाईट समर्थन gzip संपीड़न कर सकता है?

यहाँ मेरी परीक्षण कर रहे हैं:

  1. मैं ऑटोबान lib का उपयोग एक सर्वर का निर्माण करने के लिए, तो ग्राहक के लिए जिम्मेदारी के रूप में:
    HTTP/1.1 101 Switching Protocols content-encoding: gzip Connection: Upgrade Server: AutobahnPython/?.?.? Upgrade: WebSocket Sec-WebSocket-Accept: RIR8KmljoV8Cv9mdiLY7GM2nYMc=
  2. तो अपने सर्वर gzip संपीड़न
  3. का उपयोग करता है और क्रोम ब्राउज़र मिला नतीजतन, लेकिन उसने मुझे बताया कि "यूटीएफ -8 के रूप में एक टेक्स्ट फ्रेम को डीकोड नहीं किया जा सका"
+0

AutobahnPython (वर्तमान में) प्रति-फ्रेम संपीड़न एक्सटेंशन का समर्थन नहीं करता है। किसी भी मामले में, समर्थन का सिग्नल वेबसॉकेट विशिष्ट HTTP शीर्षलेख के माध्यम से किया जाता है, न कि "सामग्री-एन्कोडिंग"। – oberstet

+0

याद दिलाने के लिए धन्यवाद। किसी भी तरह, websocket का उपयोग करते समय http विधि के रूप में gzip संपीड़न का समर्थन करने का एक आसान तरीका है? – littlesun

+0

नहीं। वेबसॉकेट पर संपीड़न का उपयोग करने के लिए, एक्सटेंशन को कार्यान्वित करने की आवश्यकता है, जिसके लिए महत्वपूर्ण कोड "हुड के नीचे गहराई" की आवश्यकता होती है। – oberstet

उत्तर

4

compression extension हो आईईटीएफ वेबसाइट्स (HyBi) कार्यकारी समूह द्वारा worked on आईएनजी। मैं अद्यतित जानकारी के लिए अपनी मेलिंग सूची का पालन करने का सुझाव दूंगा। मैं this question की जांच करने की भी सिफारिश करता हूं।


अद्यतन 2017: विस्तार अब कुछ समय के लिए उपलब्ध किया गया है, यहाँ देखें: https://tools.ietf.org/html/rfc7692

+0

क्या आप मुझे बताएंगे कि कैसे उपयोग करें? मैंने आरएफसी 6455 में देखा, लेकिन मुझे नहीं पता कि कैसे उपयोग करें ... – littlesun

+0

ड्रीन के लिए धन्यवाद, यह बहुत अच्छा है। मैं संपीड़न विस्तार का अध्ययन करेंगे। क्या कोई अन्य दोस्त इस पर पढ़ रहा है? – littlesun

+0

@ लिटलसुन: जहां तक ​​मुझे पता है, यह एक्सटेंशन अभी तक उपलब्ध नहीं है क्योंकि यह अभी भी काम कर रहा है (इसका मुख्य सबूत यह है कि उन्होंने इसे "प्रति-फ्रेम" से "प्रति-संदेश" उपकरण में बदल दिया है) । जावास्क्रिप्ट स्वयं वास्तव में संपीड़न/डिकंप्रेशन के किसी भी रूप का समर्थन नहीं करता है। मुझे डर है कि अब आईईटीएफ लोगों के लिए एकमात्र समाधान इंतजार है और ब्राउज़र विक्रेताओं को इसे लागू करने के लिए इंतजार है ... यह लंबा नहीं होना चाहिए, आईएमएचओ शायद यह कुछ महीनों में होगा। – Dreen

6

WebSocket संपीड़न क्रोम में उदाहरण के लिए लिखने के समय (डिफ़ॉल्ट रूप से कुछ ब्राउज़रों में सक्षम होने पर भी नहीं फ़ायरफ़ॉक्स में)। क्लाइंट को इसके लिए 'सेक्शन-वेबसाकेट-एक्सटेंशन: परमेज-डिफ्लेट' हेडर शामिल करना होगा। यदि सर्वर एक ही एक्सटेंशन के साथ प्रतिक्रिया करता है, तो वेबसेट संचार को फ्रेम आधार पर संपीड़ित किया जाता है। जहां तक ​​मुझे पता है, एक्सटेंशन सक्षम/अक्षम करने के लिए कोई ब्राउज़र API नहीं है।

विषय के बारे में एक अच्छा लेख है: https://www.igvita.com/2013/11/27/configuring-and-optimizing-websocket-compression/

0

हाँ, यह कर सकते थे। Chrome 19+ supports it.

"https://github.com/crossbario/autobahn-python/blob/master/examples/twisted/websocket/echo_compressed/server_advanced.py" 

from twisted.internet import reactor 
from twisted.web.server import Site 
from twisted.web.static import File 

from autobahn.twisted.websocket import WebSocketServerFactory, \ 
    listenWS 

from autobahn.websocket.compress import * 

def accept(offers): 
    for offer in offers: 
     return PerMessageDeflateOfferAccept(offer) 

debug = True 
factory = WebSocketServerFactory(u"ws://127.0.0.1:9000", debug=debug, debugCodePaths=debug) 
factory.setProtocolOptions(perMessageCompressionAccept=accept) 

listenWS(factory) 

webdir = File(".") 
web = Site(webdir) 
reactor.listenTCP(8080, web) 

reactor.run() 

और जानकारी: how PerMessageDeflateOffer is used in Autobahn examples

संबंधित मुद्दे