用于移动应用程序的TCP通信和REST API的组合



我有一个在Google Play上发布的移动应用程序,目前与大约6k-8k的同时用户运行良好。实际上,我在这里需要一些帮助,以重新设计服务器和Android客户端之间的架构和通信流。这是场景。

1-1-1-1-Linux服务器在专用网络上。无法从互联网访问。

公共网络上的2- 1-Windows服务器。

3- 1-Mobile应用程序。

交流就是这样。

使用C#在ASP.NET中开发的REST API上,来自Windows Applications Server上移动土地上的每个请求。然后,REST API通过TCP协议与Linux服务器通信。从Linux服务器获取数据,并通过REST API将其发送回该应用程序。对于少数8K的用户来说,这很好。主要问题是由于TCP限制,Windows Application Server和Linx服务器之间的通信。

REST API之间的通信是Linux服务器

REST API使用服务器IP和端口为每个新请求创建TCP套接字,然后

      1-Logins to system using username and password
      2-Sends the command to get specific data. 
      3-Receives the desired data. 
      4-Logouts from linux server. 
      5-Disposes off the socket and sends this result to mobile application. 

由于移动用户的大量请求,上述步骤一次又一次重复,最终会抑制服务器上的端口。在与服务器所有者讨论之后,我必须使用Linux服务器创建一个长的TCP会话,该会话将一直保持连接,并且所有请求都将通过此频道发送,而无需每次和重新创建插座,而无需断开/处置套接字。我想要一种用Linux服务器进行长时间的TCP会话的方法。但这是REST API不可能的。我的意思是如何在当前情况下实现这一目标。我对C#和dotnet的平台形式限制。作为我的Android开发人员,我对Dotnet的了解不多。任何帮助都将被大大拨款。

如何将Websocket用于您的持续连接?在JavaScript中,代码看起来像这样的草图:

var theSocket = null;
function interactServer() {
    theSocket = new WebSocket(document.URL.replace("http", "ws"));
    theSocket.onopen = function() {theSocket.onopen = null; notifyServer(<initialization request>);};
    theSocket.onmessage = function(event) {<function to handle a message>(event.data);};
    theSocket.onclose = function() {<cleanup code>};
    }

notifyserver是将REST请求发送到服务器的函数。使InteractServer成为初始HTML屏幕的Onload功能,以便该连接实例化第一件事。

使用XHR的问题是,即使浏览器关闭套接字,服务器平台也可能泄漏插座资源。基于Windows的平台肯定会。websocket连接在请求中持续存在,因此不会创建资源渗透问题。

最新更新