2015-07-21 55 views
0

我目前正在为我的应用程序开发一个即时消息功能(最好是跨平台的移动应用程序/网络应用程序),并且我无法解决我的问题。 到目前为止,我已经能够在本地工作,使用带有socket.io,django和redis的Node.js服务器,遵循大多数在线教程的建议。 我现在的步骤在于使用亚马逊AWS将所有内容放入云中。我的Django服务器已启动并正在运行,我创建了一个新的单独的Node.js服务器,并且使用Elasticache处理Redis部分。我启动了不同的部分,并没有出现错误。 但是,每当我尝试使用网络上我的短信功能,我不断收到一个错误500:如何在使用socket.io与Node.js服务器通信时使Django传递cookie?

握手错误

然后我用控制台检查请求头,我观察到的cookie不是在那里,相反,当我在本地主机。我知道这是必要的授权握手,所以我想这就是我的错误来自哪里..

此外,我也检查了cookie确实存在,他们只是没有设置在请求头。

我的问题是:我怎样才能确保Django或套接字客户端(不知道谁负责这里..)把cookie放在标头?

我的一个想法是,也许我应该把所有的东西放在同一台服务器上,不同的端口,而不是2个独立的服务器?与描述如何使其在本地工作的教程相比,关于该特定体系结构问题的文档惊人地稀少。

我希望我能够准确地描述问题! :)

重要说明:我使用的是socket.io v0.9.1-1,只有一个兼容钛移动应用程序。

谢谢你的帮助!

回答

1

好的,所以我取得了一些进展。 Cookie问题来自于我正在提出跨域请求的事实,添加了几条启用了CORS的线,该线并未解决cookie问题,但允许我在服务器之间进行通信(基本上,我使用express设置了响应的标题。然后我在查询中传递了必要的数据,即使不是最安全的方式,我只是建立了MVP,现在已经足够了。

我还没有能够使聊天工作从我的钛手机应用程序,但因为我可以使用webview来处理它,我会没事的。

希望这将有助于某人..如果有人需要我张贴一些代码片段,我会很乐意根据要求这样做!

干杯

+0

我得到它的工作在移动和:我被迫插座使用XHR轮询。我的猜测是,Nginx和websockets还不是很好的朋友,并且没有关于配置Nginx的一些知识,所以在Nginx后面建立一个websocket连接是一个痛苦。所以我添加了'io.set('transports',['xhr-polling']);'服务器端,以防止发生websocket错误。 – ChIngalls

相关问题