What is PubNub and what are its top alternatives?
PubNub is a real-time Data Stream Network (DSN) that provides scalable messaging for web, mobile, and IoT applications. Its key features include low-latency communication, push notifications, presence detection, stream analytics, and messaging history. However, PubNub can be expensive for high usage scenarios, has limited message size, and lacks full control over data residency and compliance.
Firebase: Firebase, owned by Google, offers real-time database, authentication, and hosting services. It provides real-time synchronization, offline support, and robust security features. Pros include integration with Google services and Firebase's easy-to-use interfaces. However, Firebase may have limitations in scalability for very large applications.
Pusher: Pusher is a hosted service that enables developers to add real-time functionalities to their applications. It offers channels, events, and presence features for real-time communication. Pros include easy setup and comprehensive documentation. However, Pusher may be cost-prohibitive for high message volume.
Socket.io: Socket.io is a JavaScript library for real-time web applications. It enables bidirectional communication between clients and servers through websockets. Key features include event-driven architecture and room support. Pros of Socket.io include its adaptability and ease of use. However, it may not be as scalable as other solutions.
AWS IoT Core: Amazon Web Services (AWS) IoT Core is a managed cloud platform that enables devices to connect with cloud applications reliably and securely. It offers device management, data processing, and rules engine. Pros include integration with other AWS services and robust security features. However, AWS IoT Core may have a steeper learning curve.
SignalR: SignalR is a library for ASP.NET developers to add real-time web functionality to their applications. It supports WebSockets, Server-Sent Events, and long polling. Pros include seamless integration with ASP.NET and ease of scaling. However, SignalR may be limited in features compared to other solutions.
Meteor: Meteor is a full-stack platform for developing web and mobile applications in pure JavaScript. It includes real-time updates, data synchronization, and hot code push. Pros of Meteor include rapid prototyping and cross-platform development. However, Meteor may have performance issues with very large applications.
RabbitMQ: RabbitMQ is an open-source message broker software that implements the Advanced Message Queuing Protocol (AMQP). It allows for reliable messaging between systems and applications. Pros include flexibility in routing messages and high availability. However, RabbitMQ may require more configuration and maintenance.
Kafka: Apache Kafka is an open-source distributed event streaming platform used for building real-time data pipelines and streaming applications. It provides fault tolerance, high throughput, and scalability. Pros include horizontal scalability and durability of messages. However, Kafka may have a steeper learning curve.
Ably: Ably is a real-time data delivery platform that offers Pub/Sub messaging, presence detection, and message history. It provides global edge messaging, guaranteed message delivery, and reactive programming libraries. Pros include low-latency messaging and robust infrastructure. However, Ably may have limited integrations compared to other solutions.
NATS: NATS is a lightweight and high-performance messaging system for cloud native applications. It offers publish-subscribe messaging, request-reply messaging, and scaling capabilities. Pros include simplicity of design and high performance. However, NATS may lack some advanced features present in other solutions.
Top Alternatives to PubNub
- Pusher
Pusher is the category leader in delightful APIs for app developers building communication and collaboration features. ...
- Socket.IO
It enables real-time bidirectional event-based communication. It works on every platform, browser or device, focusing equally on reliability and speed. ...
- SendBird
SendBird is a Messaging SDK, Chat API, and fully managed chat infrastructure for your mobile apps and websites. Embeddable chat for iOS, Android, JavaScript, Unity, .NET. ...
- Stream
Stream allows you to build scalable feeds, activity streams, and chat. Stream’s simple, yet powerful API’s and SDKs are used by some of the largest and most popular applications for feeds and chat. SDKs available for most popular languages. ...
- Kafka
Kafka is a distributed, partitioned, replicated commit log service. It provides the functionality of a messaging system, but with a unique design. ...
- Ably
Ably offers WebSockets, stream resume, history, presence, and managed third-party integrations to make it simple to build, extend, and deliver digital realtime experiences at scale. ...
- Firebase
Firebase is a cloud service designed to power real-time, collaborative applications. Simply add the Firebase library to your application to gain access to a shared data structure; any changes you make to that data are automatically synchronized with the Firebase cloud and with other clients within milliseconds. ...
- Twilio
Twilio offers developers a powerful API for phone services to make and receive phone calls, and send and receive text messages. Their product allows programmers to more easily integrate various communication methods into their software and programs. ...
PubNub alternatives & related posts
- An easy way to give customers realtime features55
- Websockets40
- Simple34
- Easy to get started with27
- Free plan25
- Heroku Add-on12
- Easy and fast to configure and to understand11
- JSON9
- Happy6
- Azure Add-on6
- Support5
- Push notification4
- Costly11
related Pusher posts
Which messaging service (Pusher vs. PubNub vs. Google Cloud Pub/Sub) to use for IoT?
Recently we finished long research on chat tool for our students and mentors. In the end we picked Mattermost Team Edition as the cheapest and most feature complete option. We did consider building everything from scratch and use something like Pusher or Twilio on a backend, but then we would have to implement all the desktop and mobile clients and all the features oursevles. Mattermost gave us flexible API, lots of built in or easy to install integrations and future-proof feature set. We are still integrating it with our main platform but so far the team, existing mentors and students are very happy.
- Real-time219
- Node.js143
- Event-based communication141
- Open source102
- WebSockets102
- Binary streaming26
- No internet dependency21
- Large community10
- Push notification6
- Ease of access and setup5
- Test1
- Bad documentation12
- Githubs that complement it are mostly deprecated4
- Doesn't work on React Native3
- Small community2
- Websocket Errors2
related Socket.IO posts
Hi,
I am a student and a junior developer who is a graduating candidate in comp sci major. I am about to start building my final year project which is a real-time messaging application for software developers to Enhance Knowledge Exchange and Problem Solving. It is mainly a chat application with more enhanced features. I am planning to use React and React Native for the frontend and cross-platform mobile apps, Node.js and ExpressJS for the backend, GraphQL for fetching and manipulating data from the backend and PostgreSQL for the database, and finally Socket.IO for the real-time chatting and communication. I would highly appreciate it if anyone here with experience in building similar apps to tell me if I made a good choice or suggest better tech stacks.
Thanks in advance.
Socket.IO is great for building real-time systems like chat. It's effectively a nice wrapper around WebSockets, with the ability to fallback to other methods for browsers that don't support it. We just used it to implement real-time collaboration at BaseDash, including a chat system like you're looking to build.
Node.js is probably the correct choice, especially if you're already familiar with it You'll probably still need to build an API to send requests to your server, and then use Socket.IO to push messages to your clients. This will let you authenticate users and store messages on your database so you can retrieve them later. PostgreSQL and MongoDB are good options for your database, you should be fine either way. Don't worry about speed, they'll both be sufficient.
React on the front end makes it really simple to handle real-time updating data. Again, even better since you're already familiar.
- Active support is impressive. (Support for private deve13
- Pre-built UI for major platforms10
- Easy to use10
- Migration API for customers using other chat services8
- Scalability is awesome7
- First chat SDK officially supports Xamarin7
- Because my product guy told me to5
- Unlimited number of users in public chat5
- Cool product5
- Flexible message format ex) json, xml4
- Out of the box api and features2
- Intuitive and feature-packed2
- Policy on concurrent users leads to overages and overch2
- Prices ramp up exponentially2
related SendBird posts
I am interested in using a chat SDK for a community mobile Flutter app. I am between SendBird and Stream. I currently have 2,000 monthly active users and plan to have close to 5,000 active users chatting on the app. Has anyone used either and had good/bad experiences? Currently, there is no chat functionality, and we would like to have a 1-to-1 user chat, group chat, and large community chat capabilities.
I am considering which chat solution to choose between CometChat and SendBird, for our new app. The condition is, the app is going to run in a private network and has to connect with MSSQL. Any advice on other things I have to consider before choosing one, or is there another chat service you would recommend? Thank you!
Stream
- Up and running in few minutes18
- Integrates via easy-to-use REST API18
- It's easy to setup with the minimum coding18
related Stream posts
Winds 2.0 is an open source Podcast/RSS reader developed by Stream with a core goal to enable a wide range of developers to contribute.
We chose JavaScript because nearly every developer knows or can, at the very least, read JavaScript. With ES6 and Node.js v10.x.x, it’s become a very capable language. Async/Await is powerful and easy to use (Async/Await vs Promises). Babel allows us to experiment with next-generation JavaScript (features that are not in the official JavaScript spec yet). Yarn allows us to consistently install packages quickly (and is filled with tons of new tricks)
We’re using JavaScript for everything – both front and backend. Most of our team is experienced with Go and Python, so Node was not an obvious choice for this app.
Sure... there will be haters who refuse to acknowledge that there is anything remotely positive about JavaScript (there are even rants on Hacker News about Node.js); however, without writing completely in JavaScript, we would not have seen the results we did.
#FrameworksFullStack #Languages
Recently, the team at Stream published a React Native SDK for our new Chat by Stream product. React Native brings the power of JavaScript to the world of mobile development, making it easy to develop apps for multiple platforms. We decided to publish two different endpoints for the SDK – Expo and React Native (non-expo), to avoid the hurdle and setup of using the Expo library in React Native only projects on the consumer side.
The capability of style customization is one a large deal breaker for frontend SDKs. To solve this, we decided to use styled-components in our SDK, which makes it easy to add support for themes on top of our existing components. This practice reduces the maintenance effort for stylings of custom components and keeps the overall codebase clean.
For module bundling, we decided to go with Rollup.js instead of Webpack due to its simplicity and performance in the area of library/module providers. We are using Babel for transpiling code, enabling our team to use JavaScript's next-generation features. Additionally, we are using the React Styleguidist component documentation, which makes documenting the React Native code a breeze.
Kafka
- High-throughput126
- Distributed119
- Scalable92
- High-Performance86
- Durable66
- Publish-Subscribe38
- Simple-to-use19
- Open source18
- Written in Scala and java. Runs on JVM12
- Message broker + Streaming system9
- KSQL4
- Avro schema integration4
- Robust4
- Suport Multiple clients3
- Extremely good parallelism constructs2
- Partioned, replayable log2
- Simple publisher / multi-subscriber model1
- Fun1
- Flexible1
- Non-Java clients are second-class citizens32
- Needs Zookeeper29
- Operational difficulties9
- Terrible Packaging5
related Kafka posts
When I joined NYT there was already broad dissatisfaction with the LAMP (Linux Apache HTTP Server MySQL PHP) Stack and the front end framework, in particular. So, I wasn't passing judgment on it. I mean, LAMP's fine, you can do good work in LAMP. It's a little dated at this point, but it's not ... I didn't want to rip it out for its own sake, but everyone else was like, "We don't like this, it's really inflexible." And I remember from being outside the company when that was called MIT FIVE when it had launched. And been observing it from the outside, and I was like, you guys took so long to do that and you did it so carefully, and yet you're not happy with your decisions. Why is that? That was more the impetus. If we're going to do this again, how are we going to do it in a way that we're gonna get a better result?
So we're moving quickly away from LAMP, I would say. So, right now, the new front end is React based and using Apollo. And we've been in a long, protracted, gradual rollout of the core experiences.
React is now talking to GraphQL as a primary API. There's a Node.js back end, to the front end, which is mainly for server-side rendering, as well.
Behind there, the main repository for the GraphQL server is a big table repository, that we call Bodega because it's a convenience store. And that reads off of a Kafka pipeline.
To provide employees with the critical need of interactive querying, we’ve worked with Presto, an open-source distributed SQL query engine, over the years. Operating Presto at Pinterest’s scale has involved resolving quite a few challenges like, supporting deeply nested and huge thrift schemas, slow/ bad worker detection and remediation, auto-scaling cluster, graceful cluster shutdown and impersonation support for ldap authenticator.
Our infrastructure is built on top of Amazon EC2 and we leverage Amazon S3 for storing our data. This separates compute and storage layers, and allows multiple compute clusters to share the S3 data.
We have hundreds of petabytes of data and tens of thousands of Apache Hive tables. Our Presto clusters are comprised of a fleet of 450 r4.8xl EC2 instances. Presto clusters together have over 100 TBs of memory and 14K vcpu cores. Within Pinterest, we have close to more than 1,000 monthly active users (out of total 1,600+ Pinterest employees) using Presto, who run about 400K queries on these clusters per month.
Each query submitted to Presto cluster is logged to a Kafka topic via Singer. Singer is a logging agent built at Pinterest and we talked about it in a previous post. Each query is logged when it is submitted and when it finishes. When a Presto cluster crashes, we will have query submitted events without corresponding query finished events. These events enable us to capture the effect of cluster crashes over time.
Each Presto cluster at Pinterest has workers on a mix of dedicated AWS EC2 instances and Kubernetes pods. Kubernetes platform provides us with the capability to add and remove workers from a Presto cluster very quickly. The best-case latency on bringing up a new worker on Kubernetes is less than a minute. However, when the Kubernetes cluster itself is out of resources and needs to scale up, it can take up to ten minutes. Some other advantages of deploying on Kubernetes platform is that our Presto deployment becomes agnostic of cloud vendor, instance types, OS, etc.
#BigData #AWS #DataScience #DataEngineering
- WebSockets8
- Highly reliable7
- Great technical support6
- SSE6
- Massive scalability6
- Channel Presence5
- Free plan5
- Channel History5
- Message queueing5
- Global cloud network of data centers5
- Consistently high performance5
- WebHooks4
- Third-party cloud integrations4
- MQTT4
related Ably posts
- Realtime backend made easy371
- Fast and responsive270
- Easy setup242
- Real-time215
- JSON191
- Free134
- Backed by google128
- Angular adaptor83
- Reliable68
- Great customer support36
- Great documentation32
- Real-time synchronization25
- Mobile friendly21
- Rapid prototyping19
- Great security14
- Automatic scaling12
- Freakingly awesome11
- Super fast development8
- Angularfire is an amazing addition!8
- Chat8
- Firebase hosting6
- Built in user auth/oauth6
- Awesome next-gen backend6
- Ios adaptor6
- Speed of light4
- Very easy to use4
- Great3
- It's made development super fast3
- Brilliant for startups3
- Free hosting2
- Cloud functions2
- JS Offline and Sync suport2
- Low battery consumption2
- .net2
- The concurrent updates create a great experience2
- Push notification2
- I can quickly create static web apps with no backend2
- Great all-round functionality2
- Free authentication solution2
- Easy Reactjs integration1
- Google's support1
- Free SSL1
- CDN & cache out of the box1
- Easy to use1
- Large1
- Faster workflow1
- Serverless1
- Good Free Limits1
- Simple and easy1
- Can become expensive31
- No open source, you depend on external company16
- Scalability is not infinite15
- Not Flexible Enough9
- Cant filter queries7
- Very unstable server3
- No Relational Data3
- Too many errors2
- No offline sync2
related Firebase posts
I was building a personal project that I needed to store items in a real time database. I am more comfortable with my Frontend skills than my backend so I didn't want to spend time building out anything in Ruby or Go.
I stumbled on Firebase by #Google, and it was really all I needed. It had realtime data, an area for storing file uploads and best of all for the amount of data I needed it was free!
I built out my application using tools I was familiar with, React for the framework, Redux.js to manage my state across components, and styled-components for the styling.
Now as this was a project I was just working on in my free time for fun I didn't really want to pay for hosting. I did some research and I found Netlify. I had actually seen them at #ReactRally the year before and deployed a Gatsby site to Netlify already.
Netlify was very easy to setup and link to my GitHub account you select a repo and pretty much with very little configuration you have a live site that will deploy every time you push to master.
With the selection of these tools I was able to build out my application, connect it to a realtime database, and deploy to a live environment all with $0 spent.
If you're looking to build out a small app I suggest giving these tools a go as you can get your idea out into the real world for absolutely no cost.
Your tech stack is solid for building a real-time messaging project.
React and React Native are excellent choices for the frontend, especially if you want to have both web and mobile versions of your application share code.
ExpressJS is an unopinionated framework that affords you the flexibility to use it's features at your term, which is a good start. However, I would recommend you explore Sails.js as well. Sails.js is built on top of Express.js and it provides additional features out of the box, especially the Websocket integration that your project requires.
Don't forget to set up Graphql codegen, this would improve your dev experience (Add Typescript, if you can too).
I don't know much about databases but you might want to consider using NO-SQL. I used Firebase real-time db and aws dynamo db on a few of my personal projects and I love they're easy to work with and offer more flexibility for a chat application.
- Powerful, simple, and well documented api148
- RESTful API88
- Clear pricing66
- Great sms services61
- Low cost of entry58
- Global SMS Gateway29
- Good value14
- Cloud IVR12
- Simple11
- Extremely simple to integrate with rails11
- Great for startups6
- SMS5
- Great developer program3
- Hassle free3
- Text me the app pages2
- New Features constantly rolling out1
- Many deployment options, from build from scratch to buy1
- Easy integration1
- Two factor authentication1
- Predictable pricing4
- Expensive2
related Twilio posts
Google Analytics is a great tool to analyze your traffic. To debug our software and ask questions, we love to use Postman and Stack Overflow. Google Drive helps our team to share documents. We're able to build our great products through the APIs by Google Maps, CloudFlare, Stripe, PayPal, Twilio, Let's Encrypt, and TensorFlow.
Hi, We are looking to implement 2FA - so that users would be sent a Verification code over their Email and SMS to their phone.
We faced some limitations with Amazon SNS where we could either send the verification code to email OR to the phone number, while we want to send it to both.
We also are looking to make the 2FA more flexible by adding any other options later on.
What are the best alternatives to SNS for this use case and purpose? Looked at Twilio but want to explore other options before making a decision.
Would be great to know what the experience with Twilio has been, especially the limitations/issues with Twilio...
Appreciate any input from users of Twilio and others who have had similar use cases.