Rocket.chat

Rocket.Chat – an open source chat server alternative to Slack

What is Rocket.Chat?

Rocket.Chat is a group chat project based on an open-source license. The authors’ goal was to create a free, open-source version of the widely popular Slack. It is a powerful tool for creating your own chat server offering highly configurable options, available after logging into the chat as an administrator. Changes in the configuration can also be made via the API methods available for the solution.

Rocket.Chat allows you to create private and public chatrooms and 1-on-1 conversations with other users. It can also be used to transfer all types of files.

Integration of Rocket.chat with other apps

It is possible to configure audio-video conferences, as Rocket.Chat integrates with the external Jitsi.Meet service. When you make an audio-video call, a conference is created in Jitsi.Meet and a message with a link is shared in your room.

Jitsi is one of many services that Rocket.Chat can be integrated with. Other possible integrations include Jira, GitHub, Google Calendar.

Communication with server

For communication with the Rocket.Chat server, depending on our preference, you can use REST API or WebSockets, or both together, as the authentication token generated by the login method in the first API can be used in the other and vice versa.

Most of the methods have their equivalents in both APIs and they are quite well documented under these links:

REST: https://rocket.chat/docs/developer-guides/realtime-api/
WebSocket: https://rocket.chat/docs/developer-guides/rest-api/

The documentation is somewhat imperfect. To me, the lack of descriptions of errors a method may return posed some difficulties in day to day work.

On the upside, the community that developed around Rocket.Chat is very helpful and the creators themselves take great care to keep the service up to date and the users informed. There’s a forum at users’ disposal  They gave the users of the forum at which you can ask a question about the server.

The Rocket.Chat instance was also made available, where less patient can register and talk to programmers – the authors of the project – if there is, of course, someone on the support channel.

The project code is written in JavaScript using the Meteor framework and is located at this address: https://github.com/RocketChat/Rocket.Chat

Rocket chat disadvantages

As good as all this may sound, Rocket.Chat is not perfect. For one, due to its highly extensive nature not always worth using for small projects not requiring complex group messaging options.

The fact of it being written javascript using Meteor, may be a problem for developers unfamiliar with the framework, especially when it’s required to make changes to the server code. At itCraft we are quite used to such challenges, so we had no reservations to start our adventure with Rocket.Chat.

Database sync issue

Another disadvantage worth mentioning is that where the chat is only a part of the project, we need to ensure data synchronization between the database used by the backend and the Rocket.Chat database – any registration in the application means that our backend calls the Rocket.Chat account creation method. Similarly, when changing a user name – one should take into account that the data should also be changed in the Rocket.Chat database.

Difficulties in integration

When it comes to the chat client application, be it web or mobile, the best option is to write your own app. Yes, Rocket.Chat provides a web client and SDK that can be used in an android application, but these applications do not allow for major changes and in the case of a project where the chat is only part of the functionality, it would be difficult for to integrate  such a client with other elements

Rocket.Chat Installation

Rocket.Chat installation depends on the operating system and the version of Linux we intend to install it on. Make sure you check the documentation where the installation is described step by step: https://rocket.chat/docs/installation/.

The installation instructions are very accurate and putting it on our server went without issues. After installation, go to http: // localhost: 3000 where at the first entry a setup wizard appears to intuitively guide you through the configuration of your own group chat server. After successfully completing the wizard, your server is ready. Re-entering the address above will show us the login panel for the chat.

Alternatives for Rocket.Chat – Are there any?

It is not possible to find a ready chat server that will 100% cover the customers’ requirements regarding the operation, the look of web and/or mobile applications, and functionality. Rocket.Chat, despite some deficiencies, seems to be closest to achieving this goal. The only solution that will fully meet the customer’s requirements would usually be to write the whole chat from scratch without using external solutions. However, this is not always possible. When you need to have a quick and cheap solution, Rocket.Chat is the way to go.

Summary

Rocket.Chat is cool because:

  • it’s free,
  • it’s open-source (under a very liberal  MIT License),
  • it has a variety of configuration options,
  • it enables the creation of both public and private channels and 1-on-1 conversations,
  • allows file sharing and audio-video conferencing,
  • provides APIs for both REST and WebSockets,
  • has a large, active community

Rocket.Chat is not for you if:

  • the project requires interfering with the server code and you don’t  know or don’t want to know JavaScript / Meteor,
  • chat is just part of the project and you are worried about synchronization between databases,
  • you have the budget and/or knowledge to write your own solution.

Personally, as a supporter of custom solutions, when choosing between Rocket.Chat and writing my own, I would be more inclined towards the latter, as it gives better control over the code, you need not worry about synchronizing databases, which means that some API methods would perform faster. However, considering that the budget of the project often does not allow you to write the entire chat from scratch, Rocket.Chat is a great alternative.

Rate this post
Kamil Romankiewicz, Android Developer