2010-12-10 14 views
12

WebSockets के बारे में मेरे चल रहे जिज्ञासा में, मैं एक प्रवृत्ति देख रहा हूँ:मुड़ और WebSockets: परे इको

WebSocket ब्रह्मांड के "हैलो दुनिया", कम से कम इस समय, हो रहा है "गूंज" कार्यक्षमता । यही है, प्रदर्शित आवेदन आम तौर पर है, "मैं कुछ भेजता हूं, मुझे कुछ मिलता है।"

जबकि जिसे उपयुक्त प्रदर्शन है कि प्रोटोकॉल कार्यात्मक है, इस उदाहरण केवल वास्तव में संचार कि पारंपरिक अनुरोध/प्रतिक्रिया चक्र में सक्षम बनाता है के एक ही प्रकार को दर्शाता है।

import sys 
from twisted.python import log 
from twisted.internet import reactor 
from twisted.web.static import File 
from twisted.web.websocket import WebSocketHandler, WebSocketSite 


class Echohandler(WebSocketHandler): 

    def frameReceived(self, frame): 
     log.msg("Received frame '%s'" % frame) 
     self.transport.write(frame + "\n") 


def main(): 
    log.startLogging(sys.stdout) 
    root = File(".") 
    site = WebSocketSite(root) 
    site.addHandler("/ws/echo", Echohandler) 
    reactor.listenTCP(8080, site) 
    reactor.run() 


if __name__ == "__main__": 
    main() 

मैं कैसे बजाय यहां जांच कर सकते हैं "पुश" क्षमता:

उदाहरण के लिए, केवल प्रदर्शन (सर्वर साइड पर) है कि मैं twisted.web.websockets का मिल सकता है निम्नलिखित है? यानी, मैं वेब सॉकेट को कैसे खोल सकता हूं, और उसके बाद, कुछ समय की घटना से निर्धारित कुछ समय पर, वेबसाकेट के माध्यम से एक संदेश भेजें, जिसकी सामग्री इस घटना से भी प्रभावित होती है?

(इस सवाल से दिलचस्पी उन के रूप में भी सम्मोहक इस सवाल यह है कि मैं कुछ दिन पहले पूछा संबंध हो सकता है: Making moves w/ websockets and python/django (/ twisted?))

+0

यह देखते हुए कि WebSockets फ़ायरफ़ॉक्स 4 http://hacks.mozilla.org/2010/12/websockets-disabled-in-firefox-4/ में अक्षम हैं, और तब भी जब वे पूरा कर लें, वे में काम नहीं चाहते हो सकता है सभी ब्राउज़रों, आप शायद अपने दो-तरफा ब्राउज़र संचार के लिए उच्च स्तरीय अबास्ट्रक्शन की जांच करना चाहते हैं। Websockets एथेना http://divmod.org/trac/wiki/DivmodNevow/Athena और Orbited http://orbited.org/ जैसी चीज़ों को अनुकूलित करने का एक तरीका है। – Glyph

+0

वर्तमान स्पेक (और समर्थन) के रूप में कमजोर है, क्या वेबसाइकिल वास्तव में धूमकेतु (एथेना, ऑर्बिटेड, आदि?) का एक पूर्ण रीमेक नहीं है। इस पल के लिए, मुझे उन समाधानों में दिलचस्पी नहीं है जो सभी ब्राउज़रों में काम करेंगे; मैं सिर्फ कुछ ऐसा बनाना चाहता हूं जो सामूहिक के अपने और अन्य सदस्यों के बीच काम करेगा - हमारे पास हमारे ब्राउज़र और फ़ायरवॉल स्थितियों पर पूरा नियंत्रण होगा। – jMyles

+1

नहीं, जरूरी नहीं। एथेना एक पूर्ण उच्च स्तरीय संदेश प्रणाली है, यह केवल बाइट्स परिवहन नहीं करता है। और ऑर्बिटेड कई ट्रांसपोर्ट का उपयोग कर सकते हैं, जो अधिक आदिम/कम कुशल तकनीकों पर वापस आते हैं क्योंकि यह निर्धारित करता है कि बेहतर लोग उपलब्ध नहीं हैं। यह ऐसी चीज है जिसे आप अपनी स्थिति में भी चाहते हैं, क्योंकि यदि वेबसाईट की तुलना में कुछ * बेहतर * आता है, तो आप शायद अपने सभी कोड को फिर से लिखने के बिना इसका लाभ लेना चाहेंगे। – Glyph

उत्तर

0

hendrix का उपयोग में, मैं लिए WebSocket का उपयोग करता है एक वेब पेज के एक टेलनेट सर्वर से संदेशों को पुश करने के लिए a talk at Django-NYC में एक वेब अनुप्रयोग स्थापित करने के लिए दिखाया।

9

यह एक अद्यतन EchoHandler कि बजाय सिर्फ प्रतिक्रियाशील होने का, सक्रिय हो जाएगा का एक उदाहरण है।

class ChattyHandler(WebSocketHandler): 
    def connectionMade(self): 
     self.transport.write('oh hai\n') 
     self.saysomething() 

    def saysomething(self): 
     self.transport.write('still there?\n') 
     reactor.callLater(5, self.saysomething) 

दुर्भाग्य से, https://github.com/rlotun/txWebSocket/ से WebSockets connectionMade() विधि है प्रतीत नहीं होता है, और बदले में केवल एक चीज आप में हुक कर सकते हैं __init__ है। आमतौर पर आप कनेक्शनमेड() को ओवरराइड करेंगे यदि यह 'सामान्य' मुड़ता प्रोटोकॉल था।--Fixed नदी के ऊपर

+1

इस लेखन त्रुटि को जन्म देती है।com/rlotun/txWebSocket/और मैंने अभी 'कनेक्शनमेड' हुक जोड़ा है। – jMyles

+1

लेखन त्रुटि तय –

+4

मैं https बनाए रखने होना चाहिए: – rlotun

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