diff --git a/src/sdk/conference/client.js b/src/sdk/conference/client.js
index 6237482a..94f30f9a 100644
--- a/src/sdk/conference/client.js
+++ b/src/sdk/conference/client.js
@@ -29,7 +29,7 @@ const SignalingState = {
   CONNECTED: 3,
 };
 
-const protocolVersion = '1.0';
+const protocolVersion = '1.0.1';
 
 /* eslint-disable valid-jsdoc */
 /**
diff --git a/src/sdk/conference/signaling.js b/src/sdk/conference/signaling.js
index 89a87d0f..1f7729d9 100644
--- a/src/sdk/conference/signaling.js
+++ b/src/sdk/conference/signaling.js
@@ -11,6 +11,7 @@ import {Base64} from '../base/base64.js';
 'use strict';
 
 const reconnectionAttempts = 10;
+const maxSequence = 2147483647;
 
 // eslint-disable-next-line require-jsdoc
 function handleResponse(status, data, resolve, reject) {
@@ -39,6 +40,7 @@ export class SioSignaling extends EventModule.EventDispatcher {
     this._reconnectTimes = 0;
     this._reconnectionTicket = null;
     this._refreshReconnectionTicket = null;
+    this._messageSequence = 0;
   }
 
   /**
@@ -69,6 +71,7 @@ export class SioSignaling extends EventModule.EventDispatcher {
               data: data,
             },
           }));
+          this._incrementMessageSequence();
         });
       });
       this._socket.on('reconnecting', () => {
@@ -102,7 +105,27 @@ export class SioSignaling extends EventModule.EventDispatcher {
                 data) => {
               if (status === 'ok') {
                 this._reconnectTimes = 0;
-                this._onReconnectionTicket(data);
+                if (typeof data === 'object') {
+                  if (Array.isArray(data.messages)) {
+                    let isMissingStart = false;
+                    for (const msg of data.messages) {
+                      if (isMissingStart) {
+                        this.dispatchEvent(new EventModule.MessageEvent('data', {
+                          message: {
+                            notification: msg.event,
+                            data: msg.data,
+                          },
+                        }));
+                        this._incrementMessageSequence();
+                      } else if (msg.seq === this._messageSequence) {
+                        isMissingStart = true;
+                      }
+                    }
+                  }
+                  this._onReconnectionTicket(data.ticket);
+                } else {
+                  this._onReconnectionTicket(data);
+                }
               } else {
                 this.dispatchEvent(new EventModule.OwtEvent('disconnect'));
               }
@@ -193,4 +216,12 @@ export class SioSignaling extends EventModule.EventDispatcher {
     clearTimeout(this._refreshReconnectionTicket);
     this._refreshReconnectionTicket = null;
   }
+
+  _incrementMessageSequence() {
+    if (this._messageSequence === maxSequence) {
+      this._messageSequence = 0;
+    } else {
+      this._messageSequence++;
+    }
+  }
 }