CrazyEngineers
  • 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
Howdy guest!
Dear guest, you must be logged-in to participate on CrazyEngineers. We would love to have you as a member of our community. Consider creating an account or login.
Replies
  • Aadit Kapoor

    MemberApr 1, 2016

    how about js lib?
    Are you sure? This action cannot be undone.
    Cancel
  • Rahul Shetty

    MemberApr 1, 2016

    My recommendation:

    Front-end:
    • React
    • Axios / fetch
    • React-native (mobile app)
    Backend:
    • Express
    • Firebase / RethinkDB / MongoDB - (with Websocket)
    Are you sure? This action cannot be undone.
    Cancel
  • Kaustubh Katdare

    AdministratorApr 2, 2016

    Please add reasoning as well. 😀 I think we're pretty much okay with MariaDB or Percona for the back-end.
    Are you sure? This action cannot be undone.
    Cancel
  • Rahul Shetty

    MemberApr 3, 2016

    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. 😉
    Are you sure? This action cannot be undone.
    Cancel
  • The_Small_k

    MemberApr 24, 2016

    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 😁
    Are you sure? This action cannot be undone.
    Cancel
  • Chaitanya Kukde

    MemberApr 25, 2016

    Not constructive to the current thread, but why not a #CrazyEngineers IRC channel ?
    Are you sure? This action cannot be undone.
    Cancel
  • Kaustubh Katdare

    AdministratorApr 25, 2016

    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 😀
    Are you sure? This action cannot be undone.
    Cancel
  • Prasad Ajinkya

    MemberMay 1, 2016

    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.
    Are you sure? This action cannot be undone.
    Cancel
  • Kaustubh Katdare

    AdministratorMay 1, 2016

    #-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.
    Are you sure? This action cannot be undone.
    Cancel
  • Jash Mota

    MemberJun 12, 2016

    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
    Are you sure? This action cannot be undone.
    Cancel
  • simplycoder

    MemberJun 25, 2016

    Thinking about this, there are two options I can suggest from top of my head,
    1)MEAN stack
    2).NET based SignalR
    Are you sure? This action cannot be undone.
    Cancel
  • Muhsin Mohamed Pc

    MemberJul 21, 2016

    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.
    Are you sure? This action cannot be undone.
    Cancel
  • Kaustubh Katdare

    AdministratorJul 21, 2016

    Firebase looks promising; I'm planning to explore the socket.io option to begin with.
    Are you sure? This action cannot be undone.
    Cancel
  • Big_B

    MemberAug 1, 2016

    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. <a href="https://nodejs.org/en/" target="_blank" rel="nofollow noopener noreferrer">Node.js</a> - Use for Server-side Development
    2. <a href="https://expressjs.com/" target="_blank" rel="nofollow noopener noreferrer">Express - Node.js web application framework</a> - Use for REST API creation for different Routes.
    3. <a href="https://handlebarsjs.com/" target="_blank" rel="nofollow noopener noreferrer">Handlebars</a> - Use for Frontend templating
    4. <a href="https://www.mongodb.com/" target="_blank" rel="nofollow noopener noreferrer">MongoDB: The Developer Data Platform | MongoDB</a>- NoSQL database to store chat and user meta info
    5. <a href="https://socket.io/" target="_blank" rel="nofollow noopener noreferrer">Socket.IO</a> - Realtime data transfering from client-server and vice-versa
    6. <a href="https://github.com/openpgpjs/openpgpjs" target="_blank" rel="nofollow noopener noreferrer">GitHub - openpgpjs/openpgpjs: OpenPGP implementation for JavaScript</a> - End-to-End Encryption for messages
    7. #-Link-Snipped-# - Authentication Middleware for login
    8. #-Link-Snipped-# - Send e-mails with Node.JS
    9. <a href="https://www.mailgun.com/" target="_blank" rel="nofollow noopener noreferrer">Transactional Email API Service For Developers | Mailgun</a> - Use with Nodemailer as a email transport middleware.
    10. <a href="https://www.nginx.com/" target="_blank" rel="nofollow noopener noreferrer">Advanced Load Balancer, Web Server, & Reverse Proxy - NGINX</a> - Use for TCP and UDP Load Balancing & Proxy
    And for Push Notification "<a href="https://firebase.google.com/docs/cloud-messaging/" target="_blank" rel="nofollow noopener noreferrer">Firebase Cloud Messaging</a>" is the best at this point and 'Free'.😉

    Are you planing for CE Chat app? 😒
    Are you sure? This action cannot be undone.
    Cancel
  • Kaustubh Katdare

    AdministratorAug 1, 2016

    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.
    Are you sure? This action cannot be undone.
    Cancel
Home Channels Search Login Register