PubSub is the easiest way to capture and transmit events anywhere! Have an email and want it to trigger IFTTT? Easy! Want an Arduino to interface with Github? Done!
It's easy to hook up a webhook, an incoming email, a UDP payload from an IoT device,
or a SocketIO application to invoke anything else. You can even transform
and manipulate data on the server with Javascript!
Head over to the documentation and check out all the different protocols you can communicate with, along with how to run server-side javascript!
Integrate with your Arduino
Ubsub natively supports esp8266-like boards (esp32, nodemcu, particle, arduino, etc). This makes it super easy to send and receive data to the board from the cloud.
You can both send and receive emails via ubsub (As data payloads, of course). This makes it easy to inspect automated emails and decide whether to alert!
Listen to Events in your Application
Listen to and emit events directly in your application from a variety of protocols including SocketIO, MQTT, and HTTP endpoints.
using System;
using Quobject.SocketIoClientDotNet.Client;
using System.Threading;
using Newtonsoft.Json;
using System.Text;
using Newtonsoft.Json.Linq;
namespace csharp
{
public static class SocketIOExample
{
private static readonly String USER_ID = "HypW9sEVE";
private static readonly String USER_KEY = "463e501e5f66b72987d13770406b7b3f8e11f98f0add9ff1";
private static readonly string TOPIC_ID = "rkxsfcsVN4";
public static void ExampleMain()
{
Console.WriteLine("Connecting...");
var url = "https://socket.ubsub.io";
var manager = new Manager(new Uri(url));
var sock = manager.Socket("/socket");
sock.On(Socket.EVENT_CONNECT, () =>
{
Console.WriteLine("Connected!");
var data = JObject.FromObject(new
{
userId = USER_ID,
userKey = USER_KEY,
topicId = TOPIC_ID,
});
sock.Emit("subscribe", data);
});
sock.On(Socket.EVENT_ERROR, err =>
{
Console.WriteLine(err);
});
sock.On("event", data =>
{
Console.WriteLine(data);
});
while(true)
{
Thread.Sleep(TimeSpan.FromSeconds(1));
}
}
}
}
package io.ubsub.example;
import io.socket.client.IO;
import io.socket.client.Socket;
public class Main {
private static final String USER_ID = "HypW9sEVE";
private static final String USER_KEY = "463e501e5f66b72987d13770406b7b3f8e11f98f0add9ff1";
private static final String TOPIC_ID = "rkxsfcsVN4";
public static void main(String[] args) throws Throwable {
String url = String.format("https://socket.ubsub.io/socket?userId=%s&userKey=%s&topicId=%s", USER_ID, USER_KEY, TOPIC_ID);
Socket sock = IO.socket(url);
sock.on(Socket.EVENT_CONNECT, (x) -> {
System.out.println("Connected!");
});
sock.on("event", x -> {
System.out.println(x.toString());
});
sock.connect();
}
}
Features
Multi-Protocol
Communicate with different protocols such as HTTP, Email, SocketIO, UDP, and MQTT. Easily connect
anything to everything.
Common Language
UbSub communicates with the most common language on the internet: JSON
Many Use Cases
Because there are so many protocols, it covers a variety of use-cases such as low-power IoT devices, 3rd party platforms, web browers, or your own internal systems.
Validation & Transformation
Manipulate and validate your payload and translate it to something your subscriber understands
without the hassile of managing servers.
Separate Concerns
No need to have one service need to know about another. Centralize service interaction and communication through UbSub.
Simple Data Store
Persist simple variables to keep track of state between event publications.
Cron Jobs
Schedule tasks to kick off events, check service health, or poll for data.