Skip to content

Commit 1af9173

Browse files
committed
Presence channels support
1 parent 15f16ff commit 1af9173

File tree

6 files changed

+22
-12
lines changed

6 files changed

+22
-12
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -609,7 +609,7 @@ PusherChannel *myChannel = [pusher subscribeWithChannelName:@"my-channel"];
609609
610610
This returns PusherChannel object, which events can be bound to.
611611
612-
For non-presence channels, you can also provide a function that will be called when a client either subscribes or unsubscribes to a channel with the number of subscribers as a parameter. Also, this function is available as a parameter to `subscribe` function.
612+
You can also provide a function that will be called when a client either subscribes or unsubscribes to a channel with the number of subscribers as a parameter. Also, this function is available as a parameter to `subscribe` function.
613613
614614
```swift
615615
let onSubscriptionCountChanged = { (count: Int) in

Sources/Models/PusherChannels.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,8 @@ import Foundation
8282
connection: PusherConnection,
8383
auth: PusherAuth? = nil,
8484
onMemberAdded: ((PusherPresenceChannelMember) -> Void)? = nil,
85-
onMemberRemoved: ((PusherPresenceChannelMember) -> Void)? = nil
85+
onMemberRemoved: ((PusherPresenceChannelMember) -> Void)? = nil,
86+
onSubscriptionCountChanged: ((Int) -> Void)? = nil
8687
) -> PusherPresenceChannel {
8788
if let channel = self.channels[channelName] as? PusherPresenceChannel {
8889
return channel
@@ -92,7 +93,8 @@ import Foundation
9293
connection: connection,
9394
auth: auth,
9495
onMemberAdded: onMemberAdded,
95-
onMemberRemoved: onMemberRemoved
96+
onMemberRemoved: onMemberRemoved,
97+
onSubscriptionCountChanged: onSubscriptionCountChanged
9698
)
9799
self.channels[channelName] = newChannel
98100
return newChannel

Sources/Models/PusherPresenceChannel.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,13 @@ public typealias PusherUserInfoObject = [String: AnyObject]
2929
connection: PusherConnection,
3030
auth: PusherAuth? = nil,
3131
onMemberAdded: ((PusherPresenceChannelMember) -> Void)? = nil,
32-
onMemberRemoved: ((PusherPresenceChannelMember) -> Void)? = nil
32+
onMemberRemoved: ((PusherPresenceChannelMember) -> Void)? = nil,
33+
onSubscriptionCountChanged: ((Int) -> Void)? = nil
3334
) {
3435
self.members = []
3536
self.onMemberAdded = onMemberAdded
3637
self.onMemberRemoved = onMemberRemoved
37-
super.init(name: name, connection: connection, auth: auth)
38+
super.init(name: name, connection: connection, auth: auth, onSubscriptionCountChanged: onSubscriptionCountChanged)
3839
}
3940

4041
/**

Sources/ObjC/Pusher+ObjectiveC.swift

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,21 @@ import Foundation
2222
return self.subscribeToPresenceChannel(channelName: channelName,
2323
auth: nil,
2424
onMemberAdded: nil,
25-
onMemberRemoved: nil)
25+
onMemberRemoved: nil,
26+
onSubscriptionCountChanged: nil)
2627
}
2728

2829
func subscribeToPresenceChannel(
2930
channelName: String,
3031
onMemberAdded: ((PusherPresenceChannelMember) -> Void)? = nil,
31-
onMemberRemoved: ((PusherPresenceChannelMember) -> Void)? = nil
32+
onMemberRemoved: ((PusherPresenceChannelMember) -> Void)? = nil,
33+
onSubscriptionCountChanged: ((Int) -> Void)? = nil
3234
) -> PusherPresenceChannel {
3335
return self.subscribeToPresenceChannel(channelName: channelName,
3436
auth: nil,
3537
onMemberAdded: onMemberAdded,
36-
onMemberRemoved: onMemberRemoved)
38+
onMemberRemoved: onMemberRemoved,
39+
onSubscriptionCountChanged: onSubscriptionCountChanged)
3740
}
3841

3942
convenience init(withAppKey key: String, options: PusherClientOptions) {

Sources/PusherSwift.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,13 +89,15 @@ let CLIENT_NAME = "pusher-websocket-swift"
8989
channelName: String,
9090
auth: PusherAuth? = nil,
9191
onMemberAdded: ((PusherPresenceChannelMember) -> Void)? = nil,
92-
onMemberRemoved: ((PusherPresenceChannelMember) -> Void)? = nil
92+
onMemberRemoved: ((PusherPresenceChannelMember) -> Void)? = nil,
93+
onSubscriptionCountChanged: ((Int) -> Void)? = nil
9394
) -> PusherPresenceChannel {
9495
return self.connection.subscribeToPresenceChannel(
9596
channelName: channelName,
9697
auth: auth,
9798
onMemberAdded: onMemberAdded,
98-
onMemberRemoved: onMemberRemoved
99+
onMemberRemoved: onMemberRemoved,
100+
onSubscriptionCountChanged: onSubscriptionCountChanged
99101
)
100102
}
101103

Sources/Services/PusherConnection.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,14 +143,16 @@ import NWWebSocket
143143
channelName: String,
144144
auth: PusherAuth? = nil,
145145
onMemberAdded: ((PusherPresenceChannelMember) -> Void)? = nil,
146-
onMemberRemoved: ((PusherPresenceChannelMember) -> Void)? = nil
146+
onMemberRemoved: ((PusherPresenceChannelMember) -> Void)? = nil,
147+
onSubscriptionCountChanged: ((Int) -> Void)? = nil
147148
) -> PusherPresenceChannel {
148149
let newChannel = channels.addPresence(
149150
channelName: channelName,
150151
connection: self,
151152
auth: auth,
152153
onMemberAdded: onMemberAdded,
153-
onMemberRemoved: onMemberRemoved
154+
onMemberRemoved: onMemberRemoved,
155+
onSubscriptionCountChanged: onSubscriptionCountChanged
154156
)
155157

156158
guard self.connectionState == .connected else { return newChannel }

0 commit comments

Comments
 (0)