Which technology stack would you recommend for real time chat system?

I'm looking at various tools, technologies and protocols for a possible implementation of real time chat, a la Slack. Most of the suggestions lead to WebSockets; but since I'm not well versed with the latest and the best, I'd rather have recommendations from all the experts here.

The system to be built is likely to resemble Slack - a popular enterprise chat / communication software. The video / audio messaging won't be a part of the system for the first few incremental versions. As of now, the programming language we might finalise on is PHP - and I know there are arguments both in favour and against it. REST is also a consideration.

Let me know if this information is sufficient for you to make recommendations or do we need more data / information here?

Replies

  • Aadit Kapoor
    Aadit Kapoor
    how about js lib?
  • Rahul Shetty
    Rahul Shetty
    My recommendation:

    Front-end:
    • React
    • Axios / fetch
    • React-native (mobile app)
    Backend:
    • Express
    • Firebase / RethinkDB / MongoDB - (with Websocket)
  • Kaustubh Katdare
    Kaustubh Katdare
    Please add reasoning as well. ๐Ÿ˜€ I think we're pretty much okay with MariaDB or Percona for the back-end.
  • Rahul Shetty
    Rahul Shetty
    As an engineer speaking to another engineer, my job is to provide a path and not spoon feed.

    It's just my belief and that's how I train junior engineers in my company. You can consider it an individuals perspective. I can be wrong and I can be right.

    Now, as far as your question goes you asked for the tech stack and I have listed the same. I think if you are really interested in the stack, you'll definitely research about the same. Thanks. ๐Ÿ˜‰
  • The_Small_k
    The_Small_k
    In a chat application traffic is much more than the general blogging and forum like applications ๐Ÿ˜ก
    Twitter and facebook like application which handles number of tweets and comment in a very short time periods is using the concepts of distribution in his application.

    Numbers of programming tools are available using that you can develop a distributed application and that can split the traffic on different servers.
    Apache storm & Apache kafka are one of couple that can suit you ๐Ÿ˜
  • Chaitanya Kukde
    Chaitanya Kukde
    Not constructive to the current thread, but why not a #CrazyEngineers IRC channel ?
  • Kaustubh Katdare
    Kaustubh Katdare
    Chaitanya Kukde
    Not constructive to the current thread, but why not a #CrazyEngineers IRC channel ?
    IRC's got limitations; the chat system is likely to be a smaller part of a bigger system ๐Ÿ˜€
  • Prasad Ajinkya
    Prasad Ajinkya
    Why not Slack?

    If the purpose is to build a Slack clone, then what #-Link-Snipped-# has mentioned might be a good stack to begin with.

    If the purpose is a fast chat system for members, Slack rocks. It's free and why would you want to re-invent the wheel? More importantly, Slack + IFTTT + Site RSS Feeds = Win.
  • Kaustubh Katdare
    Kaustubh Katdare
    #-Link-Snipped-# - Good to see you here ๐Ÿ˜€ . Well, the idea is not to reinvent the wheel, but to fit the wheel in a new system. Slack doesn't let us embed their rooms on other websites, I guess.
  • Jash Mota
    Jash Mota
    I guess using AJAX can solve the issue. Facebook, for example, uses AJAX for the messaging windows, so that it doesn't interfere the other parts of the website.
    #-Link-Snipped-#prefers that too.

    UPDATE: the webpage also has an attachment for chat application source code
  • simplycoder
    simplycoder
    Thinking about this, there are two options I can suggest from top of my head,
    1)MEAN stack
    2).NET based SignalR
  • Muhsin Mohamed Pc
    Muhsin Mohamed Pc
    Like what @#-Link-Snipped-# said, Use the Firebase. I also recommend the same because a lot of popular apps were using it. It was running with Node so it is faster also it will not end up without delivering the message.
  • Kaustubh Katdare
    Kaustubh Katdare
    Firebase looks promising; I'm planning to explore the socket.io option to begin with.
  • Big_B
    Big_B
    Hello Big_K, Firebase is good option because of recent changes, As announced in Google IO 2016, Its added more feature like file attachment, analytics and push notification, authentication and more on top of previous Firebase version. Here is the jump start link to video :



    If you prefer to build your own without using any services, then here is the stack:
    1. Node.js - Use for Server-side Development
    2. Express - Node.js web application framework - Use for REST API creation for different Routes.
    3. Handlebars - Use for Frontend templating
    4. MongoDB: The Developer Data Platform | MongoDB- NoSQL database to store chat and user meta info
    5. Socket.IO - Realtime data transfering from client-server and vice-versa
    6. GitHub - openpgpjs/openpgpjs: OpenPGP implementation for JavaScript - End-to-End Encryption for messages
    7. #-Link-Snipped-# - Authentication Middleware for login
    8. #-Link-Snipped-# - Send e-mails with Node.JS
    9. Transactional Email API Service For Developers | Mailgun - Use with Nodemailer as a email transport middleware.
    10. Advanced Load Balancer, Web Server, & Reverse Proxy - NGINX - Use for TCP and UDP Load Balancing & Proxy
    And for Push Notification "Firebase Cloud Messaging" is the best at this point and 'Free'.๐Ÿ˜‰

    Are you planing for CE Chat app? ๐Ÿ˜’
  • Kaustubh Katdare
    Kaustubh Katdare
    Thanks, #-Link-Snipped-# . I've already added Firebase on my list of technologies to explore. Looks like Node is rapidly becoming the de facto framework for all JS powered applications. Not sure if that's a good thing.

You are reading an archived discussion.

Related Posts

One of the main instigators in a chemical reaction is the catalyst which ultimately pushes a reaction with certain amplifications in its inherent properties. Fertilizers to hydrogen fuel cells, every...
I am about to complete 4 years of experience in the software testing. Recently, i have got promoted as a senior tester but i am underpaid. I am getting around...
I am new to d3.js. I have two collapsible tree. I want do draw a link from leaf node of one tree to leaf node of another tree. Can anyone...
hey can i get crazyengineers stickers
Looking for a good phone near about 25k,i was in mood of booking one plus two ,which seems best phone to me,but the problem is ,i haven't got a single...