为什么我的服务器在本地工作,而不是在heroku上?

时间:2015-01-17 01:12:33

标签: python heroku

这是我服务器的代码。

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 "client connected"

    def connectionLost(self, reason):
        self.factory.clients.remove(self)
        print "client disconnected"

    def dataReceived(self, data):
        print "data is ", data

        for c in self.factory.clients:
            c.message(data)

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


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

ON_HEROKU = os.environ.get('ON_HEROKU')

if ON_HEROKU:
    # get the heroku port
    port = int(os.environ.get('PORT', 17995))  
else:
    port = 3000

print "Iphone Chat server started on port: "
print port


reactor.listenTCP(port, factory)

reactor.run()

代码在本地完美运行,为自己测试。只需通过端口3000上的本地主机创建telnet通信,您就可以无缝地发送和接收数据。

然而,一旦我将此代码推送到heroku并运行服务器,服务器就会运行并打印出它正在侦听的端口,但是当我尝试创建与服务器的连接并发送数据时,它就不会这样做。似乎接收客户端连接或发送和接收数据。

任何人都可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我无法发表评论(代表不够),但我认为您无法正确连接到自己的应用。通常连接到您连接到http://<appname>.herokuapp.com的heroku应用。由于heroku的路由系统的工作原理,我认为您无法直接连接到您的应用。

请参阅https://devcenter.heroku.com/articles/http-routing