Skip to content
LAppS - Lua Application Server for micro-services with default communication over WebSockets. The fastest and most vertically scalable WebSockets server implementation ever. Low latency C++ <-> Lua stack roundtrip.
C++ HTML Shell Makefile C Lua
Branch: master
Clone or download
Pavel Kraynyukhov
Pavel Kraynyukhov fix:#141
Latest commit efc1b17 Aug 8, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE Update issue templates May 3, 2018
apps adjusted for 0.9.0 Aug 3, 2019
autobahn-testsuite-results autobahn testsuite results Jul 15, 2018
benchmark formatting Jul 28, 2019
dockerfiles 0.9.0 release bump Aug 3, 2019
docs png resolution changed May 4, 2018
dpkg 0.8.0 bump Jul 17, 2019
examples more examples and example's service descriptors corrected Aug 3, 2019
include fix:#141 Aug 8, 2019
nbproject netbeans build config autochanges Aug 7, 2019
packages @ 2df0a83 examples are fixed in 0.9.0, repackaged Aug 3, 2019
src Coverty fix: [345847] Misuse of memcmp-style function Aug 3, 2019
.dep.inc Initial import, WebSockets Protocol Implementation, non-SSL and TLSv1.2 Jan 28, 2018
.gitignore LAppS 0.7.0 defaults Jul 23, 2018
.gitmodules packages submodule update Oct 20, 2018
ChangeLog.md bump to 0.8.0 Jul 17, 2019
LAppS_Protocol_Specification.md params specification detalization Apr 29, 2018
LICENSE.md Initial import, WebSockets Protocol Implementation, non-SSL and TLSv1.2 Jan 28, 2018
LICENSE_EXCLUSIONS.md spelling Aug 3, 2019
Makefile build fix for latest changes (examples/echo/ssl directory is removed) Aug 3, 2019
README.md revision Aug 3, 2019
VERSION version bump Aug 7, 2019
_config.yml Set theme jekyll-theme-time-machine Jul 20, 2019
buildRunEnv.sh fix: #62 providing sse2 builds for 0.7.2 Nov 4, 2018
common.sh revising the docker build scripts as per #24 Oct 19, 2018
gpl.txt Initial import, WebSockets Protocol Implementation, non-SSL and TLSv1.2 Jan 28, 2018
inDockerBuild.avx.sh WIP towards 0.8.0 release Jul 17, 2019
inDockerBuild.avx2.sh WIP towards 0.8.0 release Jul 17, 2019
inDockerBuild.sse2.sh WIP towards 0.8.0 release Jul 17, 2019
inDockerBuild.ssse3.sh WIP towards 0.8.0 release Jul 17, 2019
inDockerPackage.avx.sh AVX package Jul 17, 2019
inDockerPackage.avx2.sh fix: #62 providing sse2 builds for 0.7.2 Nov 4, 2018
inDockerPackage.sse2.sh fix: #62 providing sse2 builds for 0.7.2 Nov 4, 2018
inDockerPackage.ssse3.sh fix: #62 providing sse2 builds for 0.7.2 Nov 4, 2018
runDockerBuild avx build is missing Jul 20, 2019
runLAppSEnv.sh added map option to map host directories Jul 20, 2019

README.md

Coverity Scan Build Status

LAppS - Lua Application Server

This is an attempt to provide very easy to use Lua Application Server working over WebSockets protocol (RFC 6455). LAppS is an application server for micro-services architecture. It is build to be highly scalable vertically. The docker cloud infrastructure (kubernetes or swarm) shall be used for horizontal scaling. LAppS has most scallable WebSockets server out there.

LAppS is the same thing to WebSockets as the Apache or Nginx are to HTTP. LAppS does not supports HTTP (though it supports HTTP Upgrade GET request as per RFC 6455). The only supported scripting language so far is the Lua.

RFC 6455 is fully implemented. See the Conformance section.

RFC 7692 (compression extensions) is not implemented due to concerns about BREACH attacks. It is possible to have per-message compression on the LAppS protocol level without being affected by BREACH attacks.

LAppS is an easy way to develop low-latency web applications. Please see LAppS wiki and the examples on how to build your own applications.

Please see LAppS wiki on how to build and run LAppS from sources.

Releases

03 August 2019 - 0.9.0 released with bugfixes reported by Coverty and the PVS-studio. This is a latest stable release. Please beware that there are a change in service descriptors, the keyword "internal" has been replaced with "standalone".

Binaries

  • Ubuntu bionic packages are available here.

Features

  • Fastest WebSocket stream parser in industry
  • Easy API for rapid development of backend services in lua, C or C++
  • High vertical scalability for requests parallelization
  • Several million client connections on one system
  • Higly tunable through simple JSON configuration files
  • Requests multiplexing on application level protocol
  • Copy-less high performance communications between services using MQR (an embedded shared queues) within one LAppS process
  • Two level Network ACL: Server-wide and service-specific

Services

Services are the Lua Applications. Each service may run parallel copies of itself (instances) to achieve maximum performance. The application have a choice of two protocols for clinet-server communications: RAW and LAppS.

RAW protocol behaviour is not specified and is not affected by LAppS (excluding control frames, those are never sent to the Lua Applications). It is for application to define how to handle inbound requests and how to react on them.

An optional LAppS protocol defines a framework similar to JSON-RPC, with following key differences:

  • Transport is the WebSockets
  • Exchange between server and client is encoded with CBOR
  • There are Out of Order Notifications (OON) available to serve as a server originated events. This makes it very easy to implement any kind of PUB/SUB services or the broadcasts.
  • LAppS defines channels as a means to distinguish type of the event streams for purposes of multiplexing data streams within WebSocket stream. For example channel 0 (CCH) is reserved for request-response stream. All other channels are defined by application and may or may not be synchron/asynchron, ordered or unordered (see the examples for OON primer with broadcast)

Conformance (and regression test results)

Autobahn TestSuite Results. No extensions are implemented yet

Further development

Roadmap will be ready soon. Next releases will include:

  • improved statistics on LAppS I/O
  • Support for services written in Python, PHP and JavaScript

Dependencies

  • libcrypto++-8.2
  • wolfSSL-3.15.7
  • luajit-2.0.5 or higher

Optional

Prerequisites

  • GCC Version greater then 7
You can’t perform that action at this time.