Node.js google应用程序引擎上节点应用程序中的套接字io
我想在GAE上运行一个用NodeJS编写的带有socket io的p2p聊天 我的应用程序在本地运行正常,但在我认为与套接字io相关的GAE服务器上运行时会收到错误消息 以下是本地运行时my localNode.js google应用程序引擎上节点应用程序中的套接字io,node.js,sockets,google-app-engine,Node.js,Sockets,Google App Engine,我想在GAE上运行一个用NodeJS编写的带有socket io的p2p聊天 我的应用程序在本地运行正常,但在我认为与套接字io相关的GAE服务器上运行时会收到错误消息 以下是本地运行时my localclient.html的两个相关脚本标记: <script src="/socket.io/socket.io.js"></script> <!-- <script src="https://cdn.socket.io/socket.io-1.2.0.js"&g
client.html
的两个相关脚本标记:
<script src="/socket.io/socket.io.js"></script>
<!-- <script src="https://cdn.socket.io/socket.io-1.2.0.js"></script> -->
<script type="text/javascript">
// our socket.io code goes here
var socketio = io.connect("127.0.0.1:1337");
socketio.on("message_to_client", function (data) {
to_history(data['message']);
});
function send_message() {
var msg = [document.getElementById("text1").value, user1, uuid];
socketio.emit("message_to_server", {
message: msg
});
}
</script>
或者将其指向我的防火墙规则中指定的端口65080(请参阅google提供的文档:
这些都不管用
我已经很好地加载了html,我已经加载了jQuery部分,css也很好地加载了。只是套接字的东西我似乎出了问题。我需要改变什么
如果这是有用的,请点击app.yaml:
runtime: nodejs
vm: true
非常感谢您的帮助。谢谢。我最近也制作了类似的聊天webapp,并将其部署在heroku()上。我也使用了socket.io。我不确定GAE,但我认为您不需要在socket.io js代码中指定任何IP地址。 我认为你应该使用
var socketio = io();
而不是
var socketio = io.connect("127.0.0.1:1337");
这对我来说效果很好。遗憾的是,App Engine不支持websockets(目前)。您使用的黑客软件确实不可靠,原因如下:
- 它直接连接到实例,实例可以随时关闭或回收
- 如果没有神奇的黑客技术,就真的没有办法让https沿着这条路线走下去
我希望这有帮助!谢谢。这真的很有帮助。我需要我的应用程序atm只用于非常小规模的数据收集,所以也许第一个链接中概述的解决方法就可以了。我也发现了这一点。为什么我犹豫切换到pubnub是因为我的应用程序现在已经构建了所有我想要的控件,我不知道重建是否值得。等等什么?你展示了一个应用引擎与websockets一起工作的例子,但你说它仍然不工作?请你详细说明一下!正如我解释的那样-它会有点工作。它真的不可靠,不支持https,当你的虚拟机宕机时会随机停止工作一段时间。你有计划在不久的将来添加websockets支持吗?
var socketio = io();
var socketio = io.connect("127.0.0.1:1337");