私はCloud9IDE(c9)を初めて使用しますが、これまでのところ、いくつかのマイナーな点を除いて、見栄えがします。
ドキュメントから、単純なnode.js httpサーバーを起動するには、「8080」などの通常のポートの代わりにprocess.env.PORTを渡す必要があることがわかります。
Node Hello Worldの例:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(process.env.PORT, process.env.IP);
私が知りたいのは、c9では、javascript /node.jsを使用してポートでのみサービスを開始できるということです。または、他の言語も同様に機能しますか?おそらく、ポートを渡す他の方法を使用しますか?具体的にはpython+Twisted?
ローカルで機能していたツイストコードをアップロードしましたが、ローカルポート(すでに使用されている)にアクセスしようとしていたため、c9では機能しませんでした。これがエラーです
twisted.internet.error.CannotListenError: Couldn't listen on any:8080: [Errno 98] Address already in use.
可能であれば、c9で実行している次の例をどのように機能させるでしょうか?
Python + TwistedHelloWorldの例
from twisted.web import server, resource
from twisted.internet import reactor
class Simple(resource.Resource):
isLeaf = True
def render_GET(self, request):
return "<html>Hello, world!</html>"
site = server.Site(Simple())
reactor.listenTCP(8080, site)
reactor.run()
ドキュメントとgithubの問題を最初に検索しても、あまりわかりませんでした。私はこれが可能であることを望んでおり、渡すための正しいパラメーターを見逃しました。
編集:以下の出力を更新
ノードコード
console.log(process.env.PORT)
console.log(process.env.IP)
端子出力
Running Node Process
Tip: you can access long running processes, like a server, at 'http://private-cloud.mrchampe.c9.io'.
Important: in your scripts, use 'process.env.PORT' as port and 'process.env.IP' as host.
8080
127.6.70.129
Pythonコード
import os
print os.environ["PORT"]
print os.environ["IP"]
端子出力
Running Python Process
8080
127.6.70.129
ツイストコード
import os
import twisted
from twisted.web import server, resource
from twisted.internet import reactor
class Simple(resource.Resource):
isLeaf = True
def render_GET(self, request):
return "<html>Hello, world!</html>"
site = server.Site(Simple())
reactor.listenTCP(int(os.environ["PORT"]), interface=os.environ["IP"])
reactor.run()
端子出力
Running Python Process
hello world
Traceback (most recent call last):
File "python/hello.py", line 17, in <module>
reactor.listenTCP(int(os.environ["PORT"]), interface=os.environ["IP"])
TypeError: listenTCP() takes at least 3 non-keyword arguments (2 given)
2つの引数はローカルで機能しますが、Cloud9では機能しないため、listenTCPTypeErrorは奇妙です。これらの引数の使用が機能しない理由がわかりません。
上記のコードは、この公開Cloud9プロジェクトでホストされており、誰でも見ることができます。ありがとう!