Suljettu

Perl Websocket server proof of concept

Tämä projekti sai 6 tarjousta lahjakkailta freelancereilta ja sen keskivertotarjous oli %project_bid_stats_avg_sub_45% %project_currencyDetails_sign_sub_46% (USD) .

Pyydä ilmaisia tarjouksia samanlaisesta projektista
Projektin budjetti
$30 - $250 USD
Huutoja yhteensä
6
Projektin kuvaus

BUDGET: $100-

*** For your bid to be considered please specify the recommended technology/libraries that you would use

I need a small proof of concept for a web socket server script and its dummy client script.

Proof of concept server ideally coded in Perl such as:

[url removed, login to view]

[url removed, login to view]::Async::WebSocket

Chosen solution must be reliable (people actively using it)

The dummy client can run on Linux or Windows, and can use any language

Server needs to run on CentOS 7

Server binds on port 80 for all interfaces

Server accepts and maintain persistant connections

Server and client implements native keep alive

Each client connection must be asynchroneous and non blocking

All messages implements the JSON format

All messages are securely encrypted using a known salt/key hardcoded on each side

More than one client can connect to the server using the same credentials

Each Server thread is identified by the logged in username (ex: 111111)

Message reception by clients must be first analyzed for injections by only allowing:

A-Za-z0-9[]<>'- (+ letters with accents)

If unknow characters are met, send:

['msg':'LOGIN','result':'ERR_INVMSG' ]

Server calls a function that validates user/pwd,

Implements three hard coded accounts for now:

(111111 / 222222), (333333 / 444444), (555555 / 666666)

Account 111111 is treated as an admin

Account 333333 and 444444 are treated as a regular users

Client sends the following to login:

['msg':'LOGIN','user':'333333','pwd':'444444']

If credentials are good, server responds with either:

['msg':'LOGIN','result':'OK_USER']

['msg':'LOGIN','result':'OK_ADMIN']

If credentials are not good, server responds with:

['msg':'LOGIN','result':'ERR_INVCRED']

If credentials are not good 10 times in a row, client with same IP/Port combination cannot login anymore for an hour

and server responds automatically with this message each time it tries:

['msg':'LOGIN','result':'ERR_TOOMANY']

(a table of all invalid attempts must be kept in memory for the last period: ip - port - accountnb - timestamp)

A client loggedin as an admin can put a specific message to one or several user threads event queues:

['msg':'POST', 'user':'111111','message':'Hello, world!']

The client threads identified by 111111 then sends the exact same message to the connected clients

Prior to exit and disconnect, client sends the following message:

['msg':'CMD','message':'LOGOUT']

When the server receives an event that a client connection is lost (keep alive), or the logout command, an internal clean-up is done

Vaaditut taidot

Haluatko ansaita rahaa?

  • Aseta budjettisi ja määräaika
  • Hahmottele tarjouksesi
  • Saa maksu työstäsi

Palkkaa freelancereita, jotka tekivät myös tarjouksen tästä projektista

    • Forbes
    • The New York Times
    • Time
    • Wall Street Journal
    • Times Online