Skip to content

Commit 2357f4f

Browse files
authored
Merge pull request #100 from Backendless/rtFix_BKNDLSS-30136
Rt fix bkndlss 30136
2 parents 7ba308f + 89fa630 commit 2357f4f

File tree

97 files changed

+17685
-62422
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

97 files changed

+17685
-62422
lines changed

Backendless.NET.sln

Lines changed: 0 additions & 424 deletions
Large diffs are not rendered by default.

Backendless/Backendless.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ public static void InitApp( String applicationId, String apiKey )
9494
Log.addLogger( Log.DEFAULTLOGGER, new ConsoleLogger() );
9595
Log.startLogging( BACKENDLESSLOG );
9696
#if WITHRT
97-
Quobject.EngineIoClientDotNet.Modules.LogManager.Enabled = !DeviceCheck.IsMobile;
97+
//Quobject.EngineIoClientDotNet.Modules.LogManager.Enabled = !DeviceCheck.IsMobile;
9898
#endif
9999
AppId = applicationId;
100100
APIKey = apiKey;

Backendless/Messaging/DeviceRegistrationDto.cs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@
22
using Weborb.Service;
33
using System.Diagnostics;
44
using System.Text;
5-
#if !UNITY
6-
using Plugin.DeviceInfo;
7-
#endif
85
using System.Collections.Generic;
96

107
namespace BackendlessAPI.Messaging
@@ -33,11 +30,8 @@ public class DeviceRegistration
3330
public String RegistrationId { get; set; }
3431

3532
[SetClientClassMemberName( "deviceId" )]
36-
#if !UNITY
37-
public String DeviceId { get; } = CrossDeviceInfo.Current.Id;
38-
#else
3933
public String DeviceId { get; } = DeviceIdGenerator();
40-
#endif
34+
4135
public void AddChannel( String channel )
4236
{
4337
if( Channels == null )
@@ -53,13 +47,12 @@ public void ClearRegistration()
5347
RegistrationId = null;
5448
DeviceToken = null;
5549
}
56-
#if UNITY
50+
5751
public static String DeviceIdGenerator()
5852
{
5953
Guid guid = Guid.NewGuid();
6054
string str = guid.ToString();
6155
return str;
6256
}
63-
#endif
6457
}
6558
}

Backendless/RT/RTClientSocketIO.cs

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@
99
using Weborb.Util.Logging;
1010
using Weborb.Types;
1111
using Weborb.Reader;
12-
using Quobject.EngineIoClientDotNet.ComponentEmitter;
13-
using Quobject.SocketIoClientDotNet.Client;
12+
1413

1514
namespace BackendlessAPI.RT
1615
{
@@ -167,25 +166,22 @@ private void Resubscribe()
167166
}
168167
}
169168

170-
private Emitter SubOn( RTSubscription subscription )
169+
private void SubOn( RTSubscription subscription )
171170
{
172-
Emitter emitter = connectionManager.Socket.Emit( "SUB_ON", WeborbSerializationHelper.Serialize( subscription.ToArgs() ) );
171+
connectionManager.Socket.EmitAsync( "SUB_ON", WeborbSerializationHelper.Serialize( subscription.ToArgs() ) );
173172
Log.log( Backendless.BACKENDLESSLOG, "subOn called" );
174-
return emitter;
175173
}
176174

177-
private Emitter SubOff( String subscriptionId )
175+
private void SubOff( String subscriptionId )
178176
{
179-
Emitter emitter = connectionManager.Socket.Emit( "SUB_OFF", WeborbSerializationHelper.Serialize( subscriptionId ) );
177+
connectionManager.Socket.EmitAsync( "SUB_OFF", WeborbSerializationHelper.Serialize( subscriptionId ) );
180178
Log.log( Backendless.BACKENDLESSLOG, "subOff called" );
181-
return emitter;
182179
}
183180

184-
private Emitter MetReq( RTMethodRequest methodRequest )
181+
private void MetReq( RTMethodRequest methodRequest )
185182
{
186-
Emitter emitter = connectionManager.Socket.Emit( "MET_REQ", WeborbSerializationHelper.Serialize( methodRequest.ToArgs() ) );
183+
connectionManager.Socket.EmitAsync( "MET_REQ", WeborbSerializationHelper.Serialize( methodRequest.ToArgs() ) );
187184
Log.log( Backendless.BACKENDLESSLOG, "metReq called" );
188-
return emitter;
189185
}
190186

191187

@@ -197,7 +193,7 @@ private IRTRequest HandleResult<T>( Object[] args, IDictionary<String, T> reques
197193
return null;
198194
}
199195

200-
AnonymousObject result = (AnonymousObject) WeborbSerializationHelper.Deserialize( (byte[]) args[ 0 ] );
196+
AnonymousObject result = (AnonymousObject) WeborbSerializationHelper.Deserialize( ((SocketIOClient.SocketIOResponse) args[ 0 ]).InComingBytes[0] );
201197

202198
String id = WeborbSerializationHelper.AsString( result, "id" );
203199

Backendless/RT/SocketIOConnectionManager.cs

Lines changed: 43 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,18 @@
77
using System.Threading;
88
using BackendlessAPI.Utils;
99
using BackendlessAPI.Engine;
10-
using Quobject.SocketIoClientDotNet.Client;
1110
using Weborb.Util.Logging;
12-
using IOSocket = Quobject.SocketIoClientDotNet.Client.IO;
11+
using SocketIOClient;
12+
using SocketIOClient.Transport;
13+
using System.Collections.Generic;
1314

1415
namespace BackendlessAPI.RT
1516
{
1617
internal abstract class SocketIOConnectionManager
1718
{
1819
private readonly RTLookupService rtLookupService;
1920
private readonly ITimeoutManager timeoutManager = new TimeoutManagerImpl();
20-
private Socket socket;
21+
private SocketIO socket;
2122
internal bool connected = false;
2223

2324
internal SocketIOConnectionManager()
@@ -29,18 +30,20 @@ internal SocketIOConnectionManager()
2930
}, timeoutManager );
3031
}
3132

32-
internal Socket Socket
33+
internal SocketIO Socket
3334
{
3435
get
3536
{
3637
if( IsConnected() )
3738
return socket;
3839

39-
var opts = new IOSocket.Options
40+
var opts = new SocketIOOptions
4041
{
4142
Reconnection = false,
4243
Path = "/" + Backendless.AppId,
43-
Query = new System.Collections.Generic.Dictionary<string, string>
44+
Transport = TransportProtocol.WebSocket,
45+
EIO = EngineIO.V3,
46+
Query = new Dictionary<String, String>
4447
{
4548
[ "apiKey" ] = Backendless.APIKey,
4649
[ "clientId" ] = Backendless.Messaging.DeviceID,
@@ -56,71 +59,69 @@ internal Socket Socket
5659
#if( NET_45 )
5760
opts.Transports = Quobject.Collections.Immutable.ImmutableList.Create( "websocket" );
5861
#elif !(NET_40 || NET_35)
59-
opts.Transports = ImmutableList.Create( "websocket" );
62+
//opts.Transports = ImmutableList.Create( "websocket" );
6063
#else
6164
opts.Transports = (new string[] {"websocket"}).ToList();
6265
#endif
6366
var host = rtLookupService.Lookup() + opts.Path;
64-
6567
//if( host.StartsWith( "https://" ) )
6668
// host = "http://" + host.Substring( "https://".Length );
6769

68-
if( HeadersManager.GetInstance().Headers.ContainsKey( HeadersEnum.USER_TOKEN_KEY.Header ) )
70+
if (HeadersManager.GetInstance().Headers.ContainsKey(HeadersEnum.USER_TOKEN_KEY.Header))
6971
{
70-
String userToken = HeadersManager.GetInstance().Headers[ HeadersEnum.USER_TOKEN_KEY.Header ];
72+
String userToken = HeadersManager.GetInstance().Headers[HeadersEnum.USER_TOKEN_KEY.Header];
7173

72-
if( !string.IsNullOrEmpty(userToken) )
73-
opts.Query[ "userToken" ] = userToken;
74+
if (!string.IsNullOrEmpty(userToken))
75+
opts.Query.Concat(new Dictionary<String, String> { { "userToken", userToken } });
7476
}
7577

7678
try
7779
{
78-
socket = IOSocket.Socket( host, opts );
80+
socket = new SocketIO(host, opts );
7981
}
8082
catch( System.Exception e )
8183
{
8284
ConnectError( e.Message );
8385
return Socket;
8486
}
8587

86-
socket.On( Socket.EVENT_CONNECT, ( fn ) =>
88+
socket.OnConnected += (sender, args) =>
8789
{
88-
Log.log( Backendless.BACKENDLESSLOG, "Connected event " + fn );
90+
Log.log(Backendless.BACKENDLESSLOG, "Connected event " + args);
8991
connected = true;
9092
timeoutManager.Reset();
9193
Connected();
92-
} ).On( Socket.EVENT_DISCONNECT, ( fn ) =>
94+
};
95+
96+
socket.OnDisconnected += (sender, args) =>
9397
{
94-
Log.log( Backendless.BACKENDLESSLOG, "Disconnected event {0}", fn );
98+
Log.log(Backendless.BACKENDLESSLOG, "Disconnected event {0}", args);
9599
connected = false;
96-
Disconnected( fn.ToString() );
100+
Disconnected(args.ToString());
97101
Reconnect();
98-
} ).On( Socket.EVENT_CONNECT_ERROR, ( fn ) =>
102+
};
103+
104+
socket.OnError += (sender, args) =>
99105
{
100-
Log.log( Backendless.BACKENDLESSLOG, "Connection failed {0}", fn );
106+
Log.log(Backendless.BACKENDLESSLOG, "Connection failed {0}", args);
101107
connected = false;
102-
ConnectError( fn.ToString() );
108+
ConnectError(args.ToString());
103109
Reconnect();
104-
} ).On( "SUB_RES", ( fn ) =>
105-
{
106-
Log.log( Backendless.BACKENDLESSLOG, "Got sub res" );
107-
SubscriptionResult( fn );
108-
} ).On( "MET_RES", ( fn ) =>
109-
{
110-
Log.log( Backendless.BACKENDLESSLOG, "Got met res" );
111-
InvocationResult( fn );
112-
} ).On( Socket.EVENT_ERROR, ( fn ) =>
110+
};
111+
112+
socket.On("SUB_RES", args =>
113113
{
114-
connected = false;
115-
Log.log( Backendless.BACKENDLESSLOG, $"ERROR from RT server: {fn}" );
116-
ConnectError( fn.ToString() );
117-
Reconnect();
118-
} ).On( Socket.EVENT_CONNECT_TIMEOUT, ( fn ) =>
114+
Log.log(Backendless.BACKENDLESSLOG, "Got sub res");
115+
SubscriptionResult(args);
116+
});
117+
118+
socket.On("MET_RES", args =>
119119
{
120-
connected = false;
121-
Log.log( Backendless.BACKENDLESSLOG, "timeout" );
122-
} );
123-
120+
Log.log(Backendless.BACKENDLESSLOG, "Got met res");
121+
InvocationResult(args);
122+
});
123+
124+
socket.ConnectAsync();
124125
return socket;
125126
}
126127
}
@@ -145,15 +146,15 @@ private void Reconnect()
145146
var tempSocket = Socket;
146147
}
147148

148-
internal void Disconnect()
149+
internal async void Disconnect()
149150
{
150151
Log.log( Backendless.BACKENDLESSLOG, "Try to disconnect" );
151152

152153
if (socket != null)
153154
{
154-
Socket tempSocket = socket;
155+
SocketIO tempSocket = socket;
155156
socket = null;
156-
tempSocket.Close();
157+
await tempSocket.DisconnectAsync();
157158
}
158159
}
159160

0 commit comments

Comments
 (0)