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.
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.
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:
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.
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.
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.
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
Where to start?
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.
Are there any alternatives?
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.
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:
– 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.
We also recommend our article about custom chat app development.