Skip to content

Commit 21290f5

Browse files
committed
Start working on migration guide
1 parent 1946423 commit 21290f5

Some content is hidden

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

50 files changed

+4292
-1590
lines changed

README.md

Lines changed: 4 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -31,56 +31,23 @@ socket.on("currentAmount") {data, ack in
3131
socket.connect()
3232
```
3333

34-
## Objective-C Example
35-
```objective-c
36-
@import SocketIO;
37-
38-
NSURL* url = [[NSURL alloc] initWithString:@"http://localhost:8080"];
39-
SocketManager* manager = [[SocketManager alloc] initWithSocketURL:url config:@{@"log": @YES, @"compress": @YES}];
40-
SocketIOClient* socket = manager.defaultSocket;
41-
42-
[socket on:@"connect" callback:^(NSArray* data, SocketAckEmitter* ack) {
43-
NSLog(@"socket connected");
44-
}];
45-
46-
[socket on:@"currentAmount" callback:^(NSArray* data, SocketAckEmitter* ack) {
47-
double cur = [[data objectAtIndex:0] floatValue];
48-
49-
[[socket emitWithAck:@"canUpdate" with:@[@(cur)]] timingOutAfter:0 callback:^(NSArray* data) {
50-
if ([[data[0] description] isEqualToString:@"NO ACK"]) {
51-
// Handle ack timeout
52-
}
53-
54-
[socket emit:@"update" with:@[@{@"amount": @(cur + 2.50)}]];
55-
}];
56-
57-
[ack with:@[@"Got your currentAmount, ", @"dude"]];
58-
}];
59-
60-
[socket connect];
61-
62-
```
63-
6434
## Features
65-
- Supports socket.io 2.0+ (For socket.io 1.0 use v9.x)
66-
- Supports binary
35+
- Supports socket.io 3.0+ (For socket.io 1.0 use v9.x, For socket.io 2.0 use 15.x)
36+
- Supports Binary
6737
- Supports Polling and WebSockets
6838
- Supports TLS/SSL
69-
- Can be used from Objective-C
7039

7140
## FAQS
7241
Checkout the [FAQs](https://nuclearace.github.io/Socket.IO-Client-Swift/faq.html) for commonly asked questions.
7342

43+
7444
Checkout the [12to13](https://nuclearace.github.io/Socket.IO-Client-Swift/12to13.html) guide for migrating to v13+ from v12 below.
7545

46+
Checkout the [15to16](https://nuclearace.github.io/Socket.IO-Client-Swift/15to16.html) guide for migrating to v16+ from v15.
7647

7748
## Installation
7849
Requires Swift 4/5 and Xcode 10.x
7950

80-
If you need Swift 2.3 use the [swift2.3 tag](https://github.com/socketio/socket.io-client-swift/releases/tag/swift2.3) (Pre-Swift 4 support is no longer maintained)
81-
82-
If you need Swift 3.x use v11.1.3.
83-
8451
### Swift Package Manager
8552
Add the project as a dependency to your Package.swift:
8653
```swift

Source/SocketIO/Engine/SocketEngine.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -681,6 +681,11 @@ enum EngineError: Error {
681681
}
682682

683683
extension SocketEngine {
684+
/// Delegate method for WebSocketDelegate.
685+
///
686+
/// - Parameters:
687+
/// - event: WS Event
688+
/// - _:
684689
public func didReceive(event: WebSocketEvent, client _: WebSocket) {
685690
switch event {
686691
case let .connected(headers):

Usage Docs/15to16.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Upgrading from v15 to v16
2+
3+
This guide will help you navigate the changes that were introduced in v16.

docs/12to13.html

Lines changed: 56 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<header class="header">
2121
<p class="header-col header-col--primary">
2222
<a class="header-link" href="index.html">
23-
SocketIO Docs
23+
SocketIO 16.0.0-beta2 Docs
2424
</a>
2525
(100% documented)
2626
</p>
@@ -49,6 +49,9 @@
4949
<li class="nav-group-task">
5050
<a class="nav-group-task-link" href="12to13.html">12to13</a>
5151
</li>
52+
<li class="nav-group-task">
53+
<a class="nav-group-task-link" href="15to16.html">15to16</a>
54+
</li>
5255
<li class="nav-group-task">
5356
<a class="nav-group-task-link" href="faq.html">FAQ</a>
5457
</li>
@@ -60,9 +63,6 @@
6063
<li class="nav-group-task">
6164
<a class="nav-group-task-link" href="Classes/OnAckCallback.html">OnAckCallback</a>
6265
</li>
63-
<li class="nav-group-task">
64-
<a class="nav-group-task-link" href="Classes/SSLSecurity.html">SSLSecurity</a>
65-
</li>
6666
<li class="nav-group-task">
6767
<a class="nav-group-task-link" href="Classes/SocketAckEmitter.html">SocketAckEmitter</a>
6868
</li>
@@ -109,6 +109,47 @@
109109
</li>
110110
</ul>
111111
</li>
112+
<li class="nav-group-name">
113+
<a class="nav-group-name-link" href="Extensions.html">Extensions</a>
114+
<ul class="nav-group-tasks">
115+
<li class="nav-group-task">
116+
<a class="nav-group-task-link" href="Extensions.html#/s:Sa">Array</a>
117+
</li>
118+
<li class="nav-group-task">
119+
<a class="nav-group-task-link" href="Extensions.html#/s:Sb">Bool</a>
120+
</li>
121+
<li class="nav-group-task">
122+
<a class="nav-group-task-link" href="Extensions.html#/s:10Foundation4DataV">Data</a>
123+
</li>
124+
<li class="nav-group-task">
125+
<a class="nav-group-task-link" href="Extensions.html#/s:SD">Dictionary</a>
126+
</li>
127+
<li class="nav-group-task">
128+
<a class="nav-group-task-link" href="Extensions.html#/s:Sd">Double</a>
129+
</li>
130+
<li class="nav-group-task">
131+
<a class="nav-group-task-link" href="Extensions.html#/s:Si">Int</a>
132+
</li>
133+
<li class="nav-group-task">
134+
<a class="nav-group-task-link" href="Extensions.html#/c:objc(cs)NSArray">NSArray</a>
135+
</li>
136+
<li class="nav-group-task">
137+
<a class="nav-group-task-link" href="Extensions.html#/c:objc(cs)NSData">NSData</a>
138+
</li>
139+
<li class="nav-group-task">
140+
<a class="nav-group-task-link" href="Extensions.html#/c:objc(cs)NSDictionary">NSDictionary</a>
141+
</li>
142+
<li class="nav-group-task">
143+
<a class="nav-group-task-link" href="Extensions.html#/c:objc(cs)NSNull">NSNull</a>
144+
</li>
145+
<li class="nav-group-task">
146+
<a class="nav-group-task-link" href="Extensions.html#/c:objc(cs)NSString">NSString</a>
147+
</li>
148+
<li class="nav-group-task">
149+
<a class="nav-group-task-link" href="Extensions.html#/s:SS">String</a>
150+
</li>
151+
</ul>
152+
</li>
112153
<li class="nav-group-name">
113154
<a class="nav-group-name-link" href="Protocols.html">Protocols</a>
114155
<ul class="nav-group-tasks">
@@ -183,7 +224,7 @@
183224
<article class="main-content">
184225

185226
<section class="section">
186-
<div class="section-content">
227+
<div class="section-content top-matter">
187228

188229
<h1 id='upgrading-from-v12' class='heading'>Upgrading from v12</h1>
189230

@@ -195,8 +236,8 @@ <h2 id='what-are-the-big-changes' class='heading'>What are the big changes?</h2>
195236
to create multiple clients, and each client had its own engine.</p>
196237

197238
<p>Some v12 code might&rsquo;ve looked like this:</p>
198-
<pre class="highlight swift"><code><span class="k">let</span> <span class="nv">defaultSocket</span> <span class="o">=</span> <span class="nf">SocketIOClient</span><span class="p">(</span><span class="nv">socketURL</span><span class="p">:</span> <span class="n">myURL</span><span class="p">)</span>
199-
<span class="k">let</span> <span class="nv">namespaceSocket</span> <span class="o">=</span> <span class="nf">SocketIOClient</span><span class="p">(</span><span class="nv">socketURL</span><span class="p">:</span> <span class="n">myURL</span><span class="p">,</span> <span class="nv">config</span><span class="p">:</span> <span class="p">[</span><span class="o">.</span><span class="nf">nsp</span><span class="p">(</span><span class="s">"/swift"</span><span class="p">)])</span>
239+
<pre class="highlight swift"><code><span class="k">let</span> <span class="nv">defaultSocket</span> <span class="o">=</span> <span class="kt">SocketIOClient</span><span class="p">(</span><span class="nv">socketURL</span><span class="p">:</span> <span class="n">myURL</span><span class="p">)</span>
240+
<span class="k">let</span> <span class="nv">namespaceSocket</span> <span class="o">=</span> <span class="kt">SocketIOClient</span><span class="p">(</span><span class="nv">socketURL</span><span class="p">:</span> <span class="n">myURL</span><span class="p">,</span> <span class="nv">config</span><span class="p">:</span> <span class="p">[</span><span class="o">.</span><span class="nf">nsp</span><span class="p">(</span><span class="s">"/swift"</span><span class="p">)])</span>
200241

201242
<span class="c1">// add handlers for sockets and connect</span>
202243

@@ -205,7 +246,7 @@ <h2 id='what-are-the-big-changes' class='heading'>What are the big changes?</h2>
205246
<p>In v12 this would have opened two connections to the socket.io.</p>
206247

207248
<p>In v13 the same code would look like this:</p>
208-
<pre class="highlight swift"><code><span class="k">let</span> <span class="nv">manager</span> <span class="o">=</span> <span class="nf">SocketManager</span><span class="p">(</span><span class="nv">socketURL</span><span class="p">:</span> <span class="n">myURL</span><span class="p">)</span>
249+
<pre class="highlight swift"><code><span class="k">let</span> <span class="nv">manager</span> <span class="o">=</span> <span class="kt">SocketManager</span><span class="p">(</span><span class="nv">socketURL</span><span class="p">:</span> <span class="n">myURL</span><span class="p">)</span>
209250
<span class="k">let</span> <span class="nv">defaultSocket</span> <span class="o">=</span> <span class="n">manager</span><span class="o">.</span><span class="n">defaultSocket</span>
210251
<span class="k">let</span> <span class="nv">namespaceSocket</span> <span class="o">=</span> <span class="n">manager</span><span class="o">.</span><span class="nf">socket</span><span class="p">(</span><span class="nv">forNamespace</span><span class="p">:</span> <span class="s">"/swift"</span><span class="p">)</span>
211252

@@ -236,9 +277,9 @@ <h2 id='how-sockets-are-stored' class='heading'>How sockets are stored</h2>
236277
<p>You should know that <code><a href="Classes/SocketIOClient.html">SocketIOClient</a></code>s no longer need to be held around in properties, but the <code><a href="Classes/SocketManager.html">SocketManager</a></code> should.</p>
237278

238279
<p>One of the most common mistakes people made is not maintaining a strong reference to the client.</p>
239-
<pre class="highlight swift"><code><span class="kd">class</span> <span class="nf">Manager</span> <span class="p">{</span>
280+
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">Manager</span> <span class="p">{</span>
240281
<span class="kd">func</span> <span class="nf">addHandlers</span><span class="p">()</span> <span class="p">{</span>
241-
<span class="k">let</span> <span class="nv">socket</span> <span class="o">=</span> <span class="nf">SocketIOClient</span><span class="p">(</span><span class="nv">socketURL</span><span class="p">:</span> <span class="n">myURL</span><span class="p">,</span> <span class="nv">config</span><span class="p">:</span> <span class="p">[</span><span class="o">.</span><span class="nf">nsp</span><span class="p">(</span><span class="s">"/swift"</span><span class="p">)])</span>
282+
<span class="k">let</span> <span class="nv">socket</span> <span class="o">=</span> <span class="kt">SocketIOClient</span><span class="p">(</span><span class="nv">socketURL</span><span class="p">:</span> <span class="n">myURL</span><span class="p">,</span> <span class="nv">config</span><span class="p">:</span> <span class="p">[</span><span class="o">.</span><span class="nf">nsp</span><span class="p">(</span><span class="s">"/swift"</span><span class="p">)])</span>
242283

243284
<span class="c1">// Add handlers</span>
244285
<span class="p">}</span>
@@ -248,8 +289,8 @@ <h2 id='how-sockets-are-stored' class='heading'>How sockets are stored</h2>
248289
<p>This would have resulted in the client being released and no handlers being called.</p>
249290

250291
<p>A <em>correct</em> equivalent would be:</p>
251-
<pre class="highlight swift"><code><span class="kd">class</span> <span class="nf">Manager</span> <span class="p">{</span>
252-
<span class="k">let</span> <span class="nv">socketManager</span> <span class="o">=</span> <span class="nf">SocketManager</span><span class="p">(</span><span class="nv">socketURL</span><span class="p">:</span> <span class="n">someURL</span><span class="p">)</span>
292+
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">Manager</span> <span class="p">{</span>
293+
<span class="k">let</span> <span class="nv">socketManager</span> <span class="o">=</span> <span class="kt">SocketManager</span><span class="p">(</span><span class="nv">socketURL</span><span class="p">:</span> <span class="n">someURL</span><span class="p">)</span>
253294

254295
<span class="kd">func</span> <span class="nf">addHandlers</span><span class="p">()</span> <span class="p">{</span>
255296
<span class="k">let</span> <span class="nv">socket</span> <span class="o">=</span> <span class="n">socketManager</span><span class="o">.</span><span class="nf">socket</span><span class="p">(</span><span class="nv">forNamespace</span><span class="p">:</span> <span class="s">"/swift"</span><span class="p">)</span>
@@ -268,7 +309,7 @@ <h2 id='how-sockets-are-stored' class='heading'>How sockets are stored</h2>
268309
<h2 id='what-to-call-connect-on' class='heading'>What to call connect on</h2>
269310

270311
<p>Connect can either be called on the manager directly, or on one of the sockets made from it. In either case, if the manager
271-
was not already connected to the server, a connection will be made. Also in both cases the default socket (namespace <q>/</q>)
312+
was not already connected to the server, a connection will be made. Also in both cases the default socket (namespace &ldquo;/&rdquo;)
272313
will fire a <code>connect</code> event. </p>
273314

274315
<p>The difference is that if <code>connect()</code> is just called on the manager, then any sockets for that manager that are not the default
@@ -283,8 +324,8 @@ <h2 id='what-to-call-connect-on' class='heading'>What to call connect on</h2>
283324
</article>
284325
</div>
285326
<section class="footer">
286-
<p>&copy; 2019 <a class="link" href="https://github.com/socketio/socket.io-client-swift" target="_blank" rel="external">Erik</a>. All rights reserved. (Last updated: 2019-05-28)</p>
287-
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
327+
<p>&copy; 2020 <a class="link" href="https://github.com/socketio/socket.io-client-swift" target="_blank" rel="external">Erik</a>. All rights reserved. (Last updated: 2020-11-07)</p>
328+
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.13.5</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
288329
</section>
289330
</body>
290331
</div>

0 commit comments

Comments
 (0)