Your free WebSockets server - We can provide you with a ready to use technical solution to your WebSockets needs.
SocketsBay.com is an open WebSocket server, anyone can create an account and generate an API key to start using the server. There is no additional plugin or library installation required in your app to use the SocketBay. server. The following URL is all you need:
Copy the WebSocket server URL below, replace CHANNEL_ID (it can be any positive integer) and API_KEY
You can use the Online Websocket Tester.
This tool can be used to test other websocket servers too.
It should be a positive integer ( from 1 to 10.000.000 )
When a message is sent by a user, it is passed to only the members of the sender's channel.
For example: Let's say you are using two SocketsBay.com endpoints,
Suppose, there are 5 users connected to each channel. When a user from channel 10 sends a message, it is recieved by other 4 members of the channel 10 only.
Users connected to the 20 channel will not receive any message from the 10 channel
You can generate API Keys from your SocketsBay.com account for free. Just create another App in your account and you will automatically get a new API Key.
For example: Let's say you have a chat application. Each private conversation is on another channel. So you will have the following url's:
                            
    var wsUri = "wss://socketsbay.com/wss/v2/[ChannelId]/[ApiKey]/";
    var log;
    function init()
    {
      log = document.getElementById("log");
      testWebSocket();
    }
    function testWebSocket()
    {
      websocket = new WebSocket(wsUri);
      websocket.onopen    = function(evt) { onOpen(evt)    };
      websocket.onclose   = function(evt) { onClose(evt)   };
      websocket.onmessage = function(evt) { onMessage(evt) };
      websocket.onerror   = function(evt) { onError(evt)   };
    }
    function onOpen(evt)
    {
      writeLog("CONNECTED");
      sendMessage("Hello world");
    }
    function onClose(evt)
    {
      writeLog("Websocket DISCONNECTED");
    }
    function onMessage(evt)
    {
      writeLog('RESPONSE: ' + evt.data );
      websocket.close();
    }
    function onError(evt)
    {
      writeLog('ERROR: ' + evt.data);
    }
    function sendMessage(message)
    {
      writeLog("SENT: " + message);
      websocket.send(message);
    }
    function writeLog(message)
    {
      var pre = document.createElement("p");
      pre.innerHTML = message;
      log.appendChild(pre);
    }
    window.addEventListener("load", init, false);
                            
                        
                    
                            
private void createWebSocketClient() {
    URI uri;
    try {
      // Connect to local host
      uri = new URI("wss://socketsbay.com/wss/v2/[ChannelId]/[ApiKey]/");
    }
    catch (URISyntaxException e) {
      e.printStackTrace();
      return;
    }
    webSocketClient = new WebSocketClient(uri) {
      @Override
      public void onOpen() {
        Log.i("WebSocket", "Session is starting");
        webSocketClient.send("Hello World!");
      }
      @Override
      public void onTextReceived(String s) {
        Log.i("WebSocket", "Message received");
        final String message = s;
        runOnUiThread(new Runnable() {
          @Override
          public void run() {
            try{
              TextView textView = findViewById(R.id.animalSound);
              textView.setText(message);
            } catch (Exception e){
                e.printStackTrace();
            }
          }
        });
      }
      @Override
      public void onBinaryReceived(byte[] data) {
      }
      @Override
      public void onPingReceived(byte[] data) {
      }
      @Override
      public void onPongReceived(byte[] data) {
      }
      @Override
      public void onException(Exception e) {
        System.out.println(e.getMessage());
      }
      @Override
      public void onCloseReceived() {
        Log.i("WebSocket", "Closed ");
        System.out.println("onCloseReceived");
      }
    };
    webSocketClient.setConnectTimeout(10000);
    webSocketClient.setReadTimeout(60000);
    webSocketClient.enableAutomaticReconnection(5000);
    webSocketClient.connect();
  }
                            
Read more here
                            
                        
                        
                    
                            
private fun createWebSocketClient() {
  val uri:URI
  try
  {
    // Connect to local host
    uri = URI("ws://10.0.2.2:8080/websocket")
  }
  catch (e:URISyntaxException) {
    e.printStackTrace()
    return
  }
  webSocketClient = object:WebSocketClient(uri) {
    fun onOpen() {
      Log.i("WebSocket", "Session is starting")
      webSocketClient.send("Hello World!")
    }
    fun onTextReceived(s:String) {
      Log.i("WebSocket", "Message received")
      val message = s
      runOnUiThread(object:Runnable {
        public override fun run() {
          try
          {
            val textView = findViewById(R.id.animalSound)
            textView.setText(message)
          }
          catch (e:Exception) {
            e.printStackTrace()
          }
        }
      })
    }
    fun onBinaryReceived(data:ByteArray) {}
    fun onPingReceived(data:ByteArray) {}
    fun onPongReceived(data:ByteArray) {}
    fun onException(e:Exception) {
      println(e.message)
    }
    fun onCloseReceived() {
      Log.i("WebSocket", "Closed ")
      println("onCloseReceived")
    }
  }
  webSocketClient.setConnectTimeout(10000)
  webSocketClient.setReadTimeout(60000)
  webSocketClient.enableAutomaticReconnection(5000)
  webSocketClient.connect()
}
                            
 Read more here
                        
                        
                    
                            
func echoTest(){
    var messageNum = 0
    let ws = WebSocket("wss://socketsbay.com/wss/v2/[ChannelId]/[ApiKey]/")
    let send : ()->() = {
        messageNum += 1
        let msg = "\(messageNum): \(NSDate().description)"
        print("send: \(msg)")
        ws.send(msg)
    }
    ws.event.open = {
        print("opened")
        send()
    }
    ws.event.close = { code, reason, clean in
        print("close")
    }
    ws.event.error = { error in
        print("error \(error)")
    }
    ws.event.message = { message in
        if let text = message as? String {
            print("recv: \(text)")
            if messageNum == 10 {
                ws.close()
            } else {
                send()
            }
        }
    }
}
                            
Read more here here
                        
                        
Rate limit depends upon the plan you are on, see all of them here
You can use our Tester