如何在此服务器中实现 Websocket 握手?

Posted

技术标签:

【中文标题】如何在此服务器中实现 Websocket 握手?【英文标题】:How do I implement the Websocket Handshake into this server? 【发布时间】:2015-01-21 10:34:54 【问题描述】:

我需要在我的 Python 服务器中实现 Websocket 握手。我的 python 服务器使用 Twisted 进行事件处理。我发现 this webpage 解释了这个过程,但是当涉及到这一点时,我真的很头疼。那么如何在下面的服务器代码中实现 Websocket 握手:(注意,我已经从服务器中取出了我所有的项目特定代码,以便于阅读)

import os
from twisted.internet.protocol import Protocol, Factory
from twisted.internet import reactor


class IphoneChat(Protocol):

    def connectionMade(self):
        #self.transport.write("""connected""")
        #self.factory.clients.append(self)
        print "A new client has connected"

    def connectionLost(self, reason):
        for c in self.factory.clients:
            if c == self:
                self.factory.client.remove(self)


        print "client disconnected"

    def dataReceived(self, data):
        #print "Message Received: ", data


    def message(self, message):
        self.transport.write(message + '\n')


factory = Factory()
factory.protocol = IphoneChat
factory.clients = []


port = 3000
print "Server started: "
print port


reactor.listenTCP(port, factory)

reactor.run()

【问题讨论】:

【参考方案1】:

首先,请注意您找到的页面是关于一个开发中功能的文档,该功能实际上还不是 Twisted 的一部分。如果不采取您可能不想采取的特殊额外步骤,您将无法使用您在该页面上阅读的任何内容。

接下来,看看http://autobahn.ws/python/,它提供了一个 Twisted 友好的 Python 库,用于编写 WebSockets 客户端。

【讨论】:

以上是关于如何在此服务器中实现 Websocket 握手?的主要内容,如果未能解决你的问题,请参考以下文章

如何在类中实现 websocket?

websocket握手问题

无法解码来自 Websocket 的消息

在微服务应用程序中实现 websocket

python websocket握手(RFC 6455)

来自服务器[200]的HTTP响应不允许HTTP升级到WebSocket