En mi curiosidad en curso sobre websockets, estoy notando una tendencia:trenzado y WebSockets: Más allá del eco
El "hola mundo" del universo WebSocket, al menos por el momento, parece ser "eco" funcionalidad . Es decir, la aplicación demostrada es típicamente: "Envío algo, recibo algo".
Si bien demuestra que el protocolo es funcional, este ejemplo solo muestra el mismo tipo de comunicación que el ciclo de solicitud/respuesta tradicional.
Por ejemplo, la única demostración (en el lado del servidor) que puedo encontrar de twisted.web.websockets es la siguiente:
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()
¿Cómo puedo lugar estudiarán la capacidad de "empuje" aquí? es decir, ¿cómo puedo dejar el socket web abierto, y luego, en algún momento determinado por la ocurrencia de algún evento, enviar un mensaje a través del websocket, cuyo contenido también está influenciado por este evento?
(Los interesados por esta cuestión también podría considerar como convincente a esta pregunta que pedí hace unos días: Making moves w/ websockets and python/django (/ twisted?))
Dado que los websockets están desactivados en Firefox 4 http://hacks.mozilla.org/2010/12/websockets-disabled-in-firefox-4/, e incluso cuando terminen, es posible que no deseen trabajar en ellos. todos los navegadores, es probable que desee investigar una abstracción de nivel superior para su comunicación bidireccional con el navegador. Websockets son solo una forma de optimizar cosas como Athena http://divmod.org/trac/wiki/DivmodNevow/Athena y Orbited http://orbited.org/. – Glyph
Por mala calidad que sea la especificación actual (y el soporte), ¿no son realmente websockets un remake completo de Comet (Athena, Orbited, etc.?). Por el momento, no estoy interesado en soluciones que funcionen en todos los navegadores; Solo quiero construir algo que funcione entre mí y otros miembros de un colectivo: tendremos control total sobre las condiciones de nuestro navegador y firewall. – jMyles
No, no necesariamente. Athena es un completo sistema de mensajería de alto nivel, no solo transporta bytes. Y Orbited puede usar transportes múltiples, recurriendo a técnicas más primitivas/menos eficientes, ya que determina que las mejores no están disponibles. Esto es algo que desea incluso en su situación, porque si aparece algo * mejor * que websockets, probablemente quiera aprovecharlo sin tener que volver a escribir todo su código. – Glyph