Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add server-push support #1

Open
Zapotek opened this issue Sep 22, 2013 · 0 comments
Open

Add server-push support #1

Zapotek opened this issue Sep 22, 2013 · 0 comments
Assignees

Comments

@Zapotek
Copy link
Member

Zapotek commented Sep 22, 2013

Current situation

Right now, Client-Server communication can only originate from the Client-side. Clients usually maintain a single connection to the Server, which they use to communicate with it. This has served Arachni quite well thus far, but results in clients having to poll the server to check on the status of long-running processes, like scans.

In cases where bi-directional support is necessary, both entities have to have an accessible RPC Server. This however is not a viable solution as Clients can rarely expose their network resources to the outside world due to network security measures.

Server-push

Enabling the Server to push its data to the Client, without the Client having to initiate the transaction, would be beneficial under a lot of circumstances, result in less requests having to be performed overall and allow support for more features.

In addition, it would allow for real-time monitoring of Server-side processes, greatly increasing the user-experience.

Proposed implementation

The implementation should merely extend the existing specification in order to maintain backwards compatibility.

A way to do this would be by the Client sending a control message to the Server, flagging the current connection as a Server -> Client one.

In the simplest scenario where bi-direction communication is necessary, the Client would initiate a regular connection to the server used for Client -> Server RPC and an extra connection reserved for Server -> Client RPC.

The Client would then expose its RPC API over that connection in an manner identical to that of the Server.

In high-load situations, the client is free to maintain multiple connections of each type to accommodate the high-performance requirements.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant