All Projects → convergencelabs → Convergence Server

convergencelabs / Convergence Server

Licence: gpl-3.0
The Convergence Server

Programming Languages

scala
5932 projects

Projects that are alternatives of or similar to Convergence Server

CoCreateCSS
A lightweight utility-first Atomic CSS framework promoting rapid UI development. No learning curve... Apply your native css property:value directly in class, then extract and transform it.
Stars: ✭ 13 (-70.45%)
Mutual labels:  realtime, collaboration
convergence-project
The project used for Convergence Project Management and Issue Reporting
Stars: ✭ 33 (-25%)
Mutual labels:  realtime, collaboration
convergence-client-javascript
The Convergence JavaScript Client
Stars: ✭ 38 (-13.64%)
Mutual labels:  realtime, collaboration
Construct
This is The Construct
Stars: ✭ 218 (+395.45%)
Mutual labels:  collaboration, server
Yjs
Shared data types for building collaborative software
Stars: ✭ 5,894 (+13295.45%)
Mutual labels:  collaboration, realtime
CoCreate-dashboard
A simple dashboard component in vanilla javascript. Easily configured using HTML5 attributes and/or JavaScript API.
Stars: ✭ 20 (-54.55%)
Mutual labels:  realtime, collaboration
multihack-brackets
Realtime collaboration for programmers. (Brackets Extension)
Stars: ✭ 24 (-45.45%)
Mutual labels:  realtime, collaboration
Butterfly Server
The Everything is Real-Time C# Backend for Single Page Applications
Stars: ✭ 247 (+461.36%)
Mutual labels:  server, realtime
Markserv
🏁 serve markdown as html (GitHub style), index directories, live-reload as you edit
Stars: ✭ 304 (+590.91%)
Mutual labels:  server, realtime
Fluidframework
Library for building distributed, real-time collaborative web applications
Stars: ✭ 3,592 (+8063.64%)
Mutual labels:  collaboration, realtime
Swellrt
SwellRT main project. Server, JavaScript and Java clients
Stars: ✭ 205 (+365.91%)
Mutual labels:  collaboration, realtime
Clusterws
💥 Lightweight, fast and powerful framework for building scalable WebSocket applications in Node.js
Stars: ✭ 868 (+1872.73%)
Mutual labels:  server, realtime
Skypad
Skypad
Stars: ✭ 141 (+220.45%)
Mutual labels:  collaboration, realtime
javascript-examples
Examples for the Convergence Real-time Collaboration Engine
Stars: ✭ 40 (-9.09%)
Mutual labels:  realtime, collaboration
Monaco Collab Ext
Adds collaborative editing capabilities to the Monaco Editor
Stars: ✭ 83 (+88.64%)
Mutual labels:  collaboration, realtime
wiz-editor
多人实时富文本 编辑器,可以嵌入各种应用中。支持markdown语法。
Stars: ✭ 208 (+372.73%)
Mutual labels:  realtime, collaboration
Socketcluster Server
Minimal server module for SocketCluster
Stars: ✭ 70 (+59.09%)
Mutual labels:  server, realtime
Laravel Parse
A Parse SDK bridge for Laravel 5
Stars: ✭ 116 (+163.64%)
Mutual labels:  server, realtime
ace-collab-ext
Enhances the Ace Editor with real time collaboration user experience.
Stars: ✭ 67 (+52.27%)
Mutual labels:  realtime, collaboration
Glass Isc Dhcp
Glass - ISC DHCP Server Interface
Stars: ✭ 486 (+1004.55%)
Mutual labels:  server, realtime
Convergence Logo

Convergence Server

Build Status

The Convergence Server is the main server side component of the Convergence Realtime Collaboration Framework. Convergence enables developers to rapidly integrate realtime collaboration directly into their applications.

Issue Reporting

The core Convergence capability is composed of multiple individual projects that are released together. To simplify things, there is a central project that is used for issues, project planning, and road mapping. To report an issue please use the convergence-project repository.

Languages and Frameworks

  • Scala: The Convergence Server is developed primarily in Scala.
  • SBT: SBT is the build tool used by the Convergence Server.
  • Akka: Akka is the main development framework used by the Convergence Server. Akka provides the primary ability for multiple Convergence Servers to cluster together, providing horizontal scalability, and high availability.
  • OrientDB: Orient DB is used as the backing database.
  • Google Protocol Buffers: Protocol Buffers are used as the communications protocol for realtime collaboration over Web Sockets.

Development

The following development tools are required to build the Convergence Server:

The standard SBT tasks can be used to compile and test the server.

  • sbt compile
  • sbt test

The main entry point of the Convergence Server is the com.convergencelabs.server.ConvergenceServer class. This is a good place to start if you are new to the code base.

Binary Distribution

The Convergence Server uses the SBT Native Packager to build its binary distribution. To stage the build run:

sbt stage

The resultant build will be located in target/universal/stage.

Refer to the SBT Native Packager Documentation for additional build targets.

Convergence Dev Server

The Convergence Dev Server runs an all-in-one instance of Convergence along with an embedded OrientDB Database. The Convergence Dev Server will start up and OrientDB database and initialize it. It will also start a backend node, a rest API, and a realtime API. In order to better reflect a typical deployment, th Convergence Dev Server actually starts up three instances of the Convergence Server (cluster see, backend, and api server). These three instances are tied together using Akka clustering. By default ports 2551, 2552, and 2553 are used by the akka remoting subsystem (each port being used by one of the three ConvergenceServer instances).

By default, when the Convergence Dev Server successfully starts, it will provide two endpoints:

Running the Convergence Dev Server

The Convergence Dev Server can be run from your IDE of choice by executing the following main class:

com.convergencelabs.server.dev.ConvergenceDevServer

Persistent Data

By default, the Convergence Dev Server will delete the OrientDB database(s) when it starts up. IF you would like to retain data between runs set the following java property:

-Dconvergence.dev-server.persistent = true

Embedded Orient DB

In order to use the OrientDB web interface, the OrientDB Studio plugin must be loaded. The plugin is a dependency of the Convergence Server project but must be copied into the "target/orientdb/plugins" directory. As a convenience, there is an SBT task available to do this. To initialize the Orient DB plugins run the following SBT Command:

sbt orientDbPlugins

The embedded OrientDB can be accessed at: http://localhost:2480/

The credentials root / password can be used to access the databases.

Building and Running the Binary Distribution

This project uses the SBT Native Packager to build a binary distribution. The distribution can be built by running to following command:

sbt dist/stage

The distribution will be located in distribution/target/universal/stage. You can run the server by opening a terminal in this directory and executing:

bin/convergence-server

You will need a running OrientDB Server. The easiest way to accomplish that is using the following docker command:

docker run --rm --name orientdb -p 2424:2424 -p 2480:2480 -e ORIENTDB_ROOT_PASSWORD=password orientdb:3.0.31

Support

Convergence Labs provides several channels for support:

License

The Convergence Server is licensed under the GNU Public License v3 (GPLv3) license. Refer to the LICENSE for the specific terms and conditions of the license.

The Convergence Server is also available under a Commercial License. If you are interested in a non-open source license please contact us at Convergence Labs.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].