A conforming Objective-C WebSocket client library.

Overview

SocketRocket

Platforms License

Podspec Carthage Compatible

Build Status

A conforming WebSocket (RFC 6455) client library for iOS, macOS and tvOS.

Test results for SocketRocket here. You can compare to what modern browsers look like here.

SocketRocket currently conforms to all core ~300 of Autobahn's fuzzing tests (aside from two UTF-8 ones where it is merely non-strict tests 6.4.2 and 6.4.4).

Features/Design

  • TLS (wss) support, including self-signed certificates.
  • Seems to perform quite well.
  • Supports HTTP Proxies.
  • Supports IPv4/IPv6.
  • Supports SSL certificate pinning.
  • Sends ping and can process pong events.
  • Asynchronous and non-blocking. Most of the work is done on a background thread.
  • Supports iOS, macOS, tvOS.

Installing

There are a few options. Choose one, or just figure it out:

Add the following line to your Podfile:

pod 'SocketRocket'

Run pod install, and you are all set.

Add the following line to your Cartfile:

github "facebook/SocketRocket"

Run carthage update, and you should now have the latest version of SocketRocket in your Carthage folder.

  • Using SocketRocket as a sub-project

    You can also include SocketRocket as a subproject inside of your application if you'd prefer, although we do not recommend this, as it will increase your indexing time significantly. To do so, just drag and drop the SocketRocket.xcodeproj file into your workspace.

API

SRWebSocket

The Web Socket.

Note:

SRWebSocket will retain itself between -(void)open and when it closes, errors, or fails. This is similar to how NSURLConnection behaves (unlike NSURLConnection, SRWebSocket won't retain the delegate).

Interface

@interface SRWebSocket : NSObject

// Make it with this
- (instancetype)initWithURLRequest:(NSURLRequest *)request;

// Set this before opening
@property (nonatomic, weak) id <SRWebSocketDelegate> delegate;

// Open with this
- (void)open;

// Close it with this
- (void)close;

// Send a Data
- (void)sendData:(nullable NSData *)data error:(NSError **)error;

// Send a UTF8 String
- (void)sendString:(NSString *)string error:(NSError **)error;

@end

SRWebSocketDelegate

You implement this

@protocol SRWebSocketDelegate <NSObject>

@optional

- (void)webSocketDidOpen:(SRWebSocket *)webSocket;

- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessageWithString:(NSString *)string;
- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessageWithData:(NSData *)data;

- (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error;
- (void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(nullable NSString *)reason wasClean:(BOOL)wasClean;

@end

Testing

Included are setup scripts for the python testing environment. It comes packaged with vitualenv so all the dependencies are installed in userland.

To run the short test from the command line, run:

  make test

To run all the tests, run:

  make test_all

The short tests don't include the performance tests (the test harness is actually the bottleneck, not SocketRocket).

The first time this is run, it may take a while to install the dependencies. It will be smooth sailing after that.

You can also run tests inside Xcode, which runs the same thing, but makes it easier to debug.

  • Choose the SocketRocketTests target
  • Make sure your running destination is either your Mac or any Simulator
  • Run the test action (⌘+U)

TestChat Demo Application

SocketRocket includes a demo app, TestChat. It will "chat" with a listening websocket on port 9900.

TestChat Server

The sever takes a message and broadcasts it to all other connected clients.

It requires some dependencies though to run. We also want to reuse the virtualenv we made when we ran the tests. If you haven't run the tests yet, go into the SocketRocket root directory and type:

make test

This will set up your virtualenv.

Now, in your terminal:

source .env/bin/activate
pip install git+https://github.com/tornadoweb/tornado.git

In the same terminal session, start the chatroom server:

python TestChatServer/py/chatroom.py

There's also a Go implementation (with the latest weekly) where you can:

cd TestChatServer/go
go run chatroom.go

Chatting

Now, start TestChat.app (just run the target in the Xcode project). If you had it started already you can hit the refresh button to reconnect. It should say "Connected!" on top.

To talk with the app, open up your browser to http://localhost:9000 and start chatting.

WebSocket Server Implementation Recommendations

SocketRocket has been used with the following libraries:

The Tornado one is dirt simple and works like a charm. (IPython notebook uses it too). It's much easier to configure handlers and routes than in Autobahn/twisted.

Contributing

We’re glad you’re interested in SocketRocket, and we’d love to see where you take it. Please read our contributing guidelines prior to submitting a Pull Request.

Issues
  • Stream end encountered

    Stream end encountered

    Hi there,

    I see there is another thread called like mine which is closed (https://github.com/square/SocketRocket/issues/82) but I've the same issue with the use of this project (https://github.com/pkyeck/socket.IO-objc).

    The stream closed after a connexion with Facebook, where I send my accessToken and many data to my socket.io server and when I get my data back and do nothing else, my connexion closed.

    Can you help me with ?

    opened by kevinvavelin 30
  • Add Proxy support

    Add Proxy support

    This pull request added support to use SocketRocket behind http proxy.

    The proxy setting is read from the system configuration. PAC is also supported.

    If there is proxy in the system configuration. Instead open network stream to the web socket server, the network stream to the proxy server is opened. Then we send HTTP CONNECT with the web socket server address to the proxy server. After receiving 200 OK status, it operates like normal network stream.

    CLA Signed 
    opened by oldshuren 23
  • Pluggable, more flexible, security policies.

    Pluggable, more flexible, security policies.

    Motiviation

    Extract @fredericjacobs' CertificateVerifier concept with @nlutsenko's SRSecurityOptions into a pluggable SRSecurityPolicy protocol

    This retains existing SSL configuration code paths, while allowing users more flexibility to specify their own security policy. ~~It's intended that you're able to subclass an AFSecurityPolicy that conforms to the <SRSecurityPolicy> protocol to share policy between websocket and conventional requests.~~ This approach was changed. SRSecurityPolicy is now it's own class.

    Inspired by original "Require TLS 1.2 & enable pinning" pull request by Frederic Jacobs (@fredericjacobs) at: https://github.com/facebook/SocketRocket/pull/274/files

    TODO

    There are a couple things in particular that were kind of quick hacks, but wanted to get some feedback on the approach:

    • [x] Testing
    • [X] I added a synchronized block in didConnect. Maybe we can refactor so this isn't reached at so many different points
    • [x] Should SecurityPolicyBuilder be public?
    • [X] Are you OK with defaulting to TLS 1.2 only?
    • [X] ~~Implement no-encryption debug~~
    CLA Signed 
    opened by michaelkirk 22
  • Crashing at -[SRWebSocket stream:handleEvent:] (SRWebSocket.m:1405)

    Crashing at -[SRWebSocket stream:handleEvent:] (SRWebSocket.m:1405)

    Hi, I'm getting random but continuos (~10-15 a day) crashes on a desktop app I'm working on presently but I couldn't reproduce it myself and it's working for the vast majority of the users.

    So I was wondering if somebody else is seeing this before. I'm using SRWebSocket through libPusher, in case that makes a difference.

    We are using the latest (at least on CocoaPods): pod 'SocketRocket', '0.3.1-beta2'

    Thanks in advance for any help you can provide.

    Crash report:

    Exception Type: SIGSEGV Exception Codes: SEGV_NOOP at 0x0 Crashed Thread: 6

    Thread 6 Crashed: 0 libobjc.A.dylib 0x00007fff8d6c57a2 objc_retain + 18 1 libsystem_blocks.dylib 0x00007fff90313580 _Block_copy_internal + 308 2 libdispatch.dylib 0x00007fff90cee546 _dispatch_Block_copy + 43 3 libdispatch.dylib 0x00007fff90cf413f dispatch_async + 17 4 [MYAPP] 0x000000010ac84303 -SRWebSocket stream:handleEvent: 5 CoreFoundation 0x00007fff8d9a4d51 _signalEventSync + 385 6 CoreFoundation 0x00007fff8d9a4b98 _cfstream_solo_signalEventSync + 328 7 CoreFoundation 0x00007fff8d9a4a0f _CFStreamSignalEvent + 623 8 CFNetwork 0x00007fff8a86327e _ZN30CoreWriteStreamCFStreamSupport20coreStreamWriteEventEP17__CoreWriteStreamm + 102 9 CFNetwork 0x00007fff8a8631ed _ZN21CoreWriteStreamClient25coreStreamEventsAvailableEm + 53 10 CFNetwork 0x00007fff8a9969c5 _ZN14CoreStreamBase14_callClientNowEP16CoreStreamClient + 53 11 CFNetwork 0x00007fff8a88c678 ___ZN14CoreStreamBase34_streamSetEventAndScheduleDeliveryEmh_block_invoke + 33 12 CFNetwork 0x00007fff8a87c40c ___ZNK17CoreSchedulingSet13_performAsyncEPKcU13block_pointerFvvE_block_invoke + 25 13 CoreFoundation 0x00007fff8d92fcd4 CFArrayApplyFunction + 68 14 CFNetwork 0x00007fff8a87c2eb _ZN19RunloopBlockContext7performEv + 115 15 CFNetwork 0x00007fff8a87c193 _ZN17MultiplexerSource7performEv + 269 16 CFNetwork 0x00007fff8a87bfc2 _ZN17MultiplexerSource8_performEPv + 72 17 CoreFoundation 0x00007fff8d964731 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 17 18 CoreFoundation 0x00007fff8d955ea2 CFRunLoopDoSources0 + 242 19 CoreFoundation 0x00007fff8d95562f __CFRunLoopRun + 831 20 CoreFoundation 0x00007fff8d9550b5 CFRunLoopRunSpecific + 309 21 Foundation 0x00007fff8ca68adc -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 253 22 [MYAPP] 0x000000010ac8546c -_SRRunLoopThread main 23 Foundation 0x00007fff8ca6676b __NSThread__main + 1318 24 libsystem_pthread.dylib 0x00007fff8a43b899 _pthread_body + 138 25 libsystem_pthread.dylib 0x00007fff8a43b72a _pthread_struct_init + 0

    opened by marianoabdala 22
  • Issue #156: Prevents crash in handleEvent method

    Issue #156: Prevents crash in handleEvent method

    We've been seeing crashes with the stack trace posted below. Our app is crashing during a block_copy operation, performed inside the method [SRWebSocket stream:handleEvent:].

    Although i've been unable to directly reproduce this, i've added a couple safety measures that would prevent this from happening.

    Suspected scenario:

    • NSInputStream executes stream:handleEvent: in a BG thread.
    • A the exact same time, SRWebSocket instance gets dealloc'ed.
    • When stream:handleEvent: calls the dispatch_async routine, reference to self is no longer valid.

    Workaround:

    1. Updated stream:handleEvent: method: part of the code was moved to a second method, with a self-strong reference, stored in the stack.
    2. Replaced 'self' with 'weakSelf', when appropriate.
    3. NSStream delegate(s) are now being cleaned up in SocketRocket's NSRunLoop.

    Any feedback will be very welcome. Thanks in advance, and congratulations on building this awesome project!

    Crash Stack Trace:

    Crashed Thread:  3
    
    Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
    Exception Codes: EXC_I386_GPFLT
    
    Thread 0:: Dispatch queue: com.apple.main-thread
    0   libsystem_kernel.dylib          0x00007fff894a9a1a mach_msg_trap + 10
    1   libsystem_kernel.dylib          0x00007fff894a8d18 mach_msg + 64
    2   com.apple.CoreFoundation        0x00007fff94743fc5 __CFRunLoopServiceMachPort + 181
    3   com.apple.CoreFoundation        0x00007fff947435e9 __CFRunLoopRun + 1161
    4   com.apple.CoreFoundation        0x00007fff94742f25 CFRunLoopRunSpecific + 309
    5   com.apple.HIToolbox             0x00007fff912eda0d RunCurrentEventLoopInMode + 226
    6   com.apple.HIToolbox             0x00007fff912ed7b7 ReceiveNextEventCommon + 479
    7   com.apple.HIToolbox             0x00007fff912ed5bc _BlockUntilNextEventMatchingListInModeWithFilter + 65
    8   com.apple.AppKit                0x00007fff8fc603de _DPSNextEvent + 1434
    9   com.apple.AppKit                0x00007fff8fc5fa2b -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 122
    10  com.apple.AppKit                0x00007fff8fc53b2c -[NSApplication run] + 553
    11  com.apple.AppKit                0x00007fff8fc3e913 NSApplicationMain + 940
    12  libdyld.dylib                   0x00007fff8b3c95fd start + 1
    
    Thread 1:: Dispatch queue: com.apple.libdispatch-manager
    0   libsystem_kernel.dylib          0x00007fff894ae662 kevent64 + 10
    1   libdispatch.dylib               0x00007fff91d0743d _dispatch_mgr_invoke + 239
    2   libdispatch.dylib               0x00007fff91d07152 _dispatch_mgr_thread + 52
    
    Thread 2:
    0   libsystem_kernel.dylib          0x00007fff894a9a1a mach_msg_trap + 10
    1   libsystem_kernel.dylib          0x00007fff894a8d18 mach_msg + 64
    2   com.apple.CoreFoundation        0x00007fff94743fc5 __CFRunLoopServiceMachPort + 181
    3   com.apple.CoreFoundation        0x00007fff947435e9 __CFRunLoopRun + 1161
    4   com.apple.CoreFoundation        0x00007fff94742f25 CFRunLoopRunSpecific + 309
    5   com.apple.AppKit                0x00007fff8fe0016e _NSEventThread + 144
    6   libsystem_pthread.dylib         0x00007fff907cc899 _pthread_body + 138
    7   libsystem_pthread.dylib         0x00007fff907cc72a _pthread_start + 137
    8   libsystem_pthread.dylib         0x00007fff907d0fc9 thread_start + 13
    
    Thread 3 Crashed:
    0   libobjc.A.dylib                 0x00007fff88bff7a2 objc_retain + 18
    1   libsystem_blocks.dylib          0x00007fff89371580 _Block_copy_internal + 308
    2   libdispatch.dylib               0x00007fff91d05546 _dispatch_Block_copy + 43
    3   libdispatch.dylib               0x00007fff91d0b13f dispatch_async + 17
    4   com.simperium.Simperium-OSX     0x0000000107fcd3aa -[SRWebSocket stream:handleEvent:] + 801
    5   com.apple.CoreFoundation        0x00007fff94792c81 _signalEventSync + 385
    6   com.apple.CoreFoundation        0x00007fff94792ac8 _cfstream_solo_signalEventSync + 328
    7   com.apple.CoreFoundation        0x00007fff9479293f _CFStreamSignalEvent + 623
    8   com.apple.CFNetwork             0x00007fff949ba16e CoreWriteStreamCFStreamSupport::coreStreamWriteEvent(__CoreWriteStream*, unsigned long) + 102
    9   com.apple.CFNetwork             0x00007fff949ba0dd CoreWriteStreamClient::coreStreamEventsAvailable(unsigned long) + 53
    10  com.apple.CFNetwork             0x00007fff94aeda65 CoreStreamBase::_callClientNow(CoreStreamClient*) + 53
    11  com.apple.CFNetwork             0x00007fff949e3558 ___ZN14CoreStreamBase34_streamSetEventAndScheduleDeliveryEmh_block_invoke + 33
    12  com.apple.CFNetwork             0x00007fff949d32ec ___ZNK17CoreSchedulingSet13_performAsyncEPKcU13block_pointerFvvE_block_invoke + 25
    13  com.apple.CoreFoundation        0x00007fff9471db44 CFArrayApplyFunction + 68
    14  com.apple.CFNetwork             0x00007fff949d31cb RunloopBlockContext::perform() + 115
    15  com.apple.CFNetwork             0x00007fff949d3073 MultiplexerSource::perform() + 269
    16  com.apple.CFNetwork             0x00007fff949d2ea2 MultiplexerSource::_perform(void*) + 72
    17  com.apple.CoreFoundation        0x00007fff94752661 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    18  com.apple.CoreFoundation        0x00007fff94743d12 __CFRunLoopDoSources0 + 242
    19  com.apple.CoreFoundation        0x00007fff9474349f __CFRunLoopRun + 831
    20  com.apple.CoreFoundation        0x00007fff94742f25 CFRunLoopRunSpecific + 309
    21  com.apple.Foundation            0x00007fff8d0e1adc -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 253
    22  com.simperium.Simperium-OSX     0x0000000107fce528 -[_SRRunLoopThread main] + 291
    23  com.apple.Foundation            0x00007fff8d0df76b __NSThread__main__ + 1318
    24  libsystem_pthread.dylib         0x00007fff907cc899 _pthread_body + 138
    25  libsystem_pthread.dylib         0x00007fff907cc72a _pthread_start + 137
    26  libsystem_pthread.dylib         0x00007fff907d0fc9 thread_start + 13
    
    opened by jleandroperez 20
  • [SRWebSocket _pumpWriting] (SRWebSocket.m:1195)   Crash

    [SRWebSocket _pumpWriting] (SRWebSocket.m:1195) Crash

    my app has this Crash.: 0 libsystem_platform.dylib 0x39627656 0x39626000 + 5718 1 CFNetwork 0x2e912f97 0x2e8de000 + 216983 2 CFNetwork 0x2e912cc3 0x2e8de000 + 216259 3 CFNetwork 0x2e9b6a5d 0x2e8de000 + 887389 4 CFNetwork 0x2e912c13 0x2e8de000 + 216083 5 CFNetwork 0x2e912b83 0x2e8de000 + 215939 6 CoreFoundation 0x2ec64f2b 0x2ec48000 + 118571 7 homework 0x001bec7b -SRWebSocket _pumpWriting 8 homework 0x001bd5e3 -SRWebSocket _writeData: 9 homework 0x001c02c3 -SRWebSocket _sendFrameWithOpcode:data: 10 libdispatch.dylib 0x394fc103 0x394fb000 + 4355 11 libdispatch.dylib 0x39500e77 0x394fb000 + 24183 12 libdispatch.dylib 0x394fdf9b 0x394fb000 + 12187 13 libdispatch.dylib 0x39501751 0x394fb000 + 26449 14 libdispatch.dylib 0x395019d1 0x394fb000 + 27089 15 libsystem_pthread.dylib 0x3962bdff 0x3962b000 + 3583 16 libsystem_pthread.dylib 0x3962bcc4 0x3962b000 + 3268

    opened by liujianan901228 17
  • -[SRProxyConnect _dequeueInput] crash

    -[SRProxyConnect _dequeueInput] crash

    the master branch, pod "SocketRocket", :git => 'https://github.com/facebook/SocketRocket.git', :commit => '0af058c'

    2016-06-23 5 52 10
    opened by codefei 16
  • has anyone encountered NSPOSIXErrorDomain code=61?

    has anyone encountered NSPOSIXErrorDomain code=61?

    I was using SocketRocket for a while and it did work. But now (suddenly) i keep getting this error. I didn't change anything in the way i was connecting earlier.

    Error Domain=NSPOSIXErrorDomain Code=61 "The operation couldn’t be completed. Connection refused" UserInfo=0x6b9cfb0 {}

    I googled around but no luck. does anybody have an idea of why this error should happen?

    opened by oriben2 16
  • Added tvOS to podspec

    Added tvOS to podspec

    Added the tvOS platform to the podspec.

    opened by vigneshv59 16
  • Added ability to provide cookies for the web socket connection

    Added ability to provide cookies for the web socket connection

    For web sockets used behind an already authenticated HTTP(S) session you might want to provide the session cookie or other cookies appropriate for the web socket connection (for example Spring's SessionID when connecting to a Spring-authentication java backend server).

    Sample usage for the clients could be:

    [[self webSocket] setRequestCookies:[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]];
    

    Note that you might want to limit the cookies provided to the WebSocket based on the URL (cookiesForURL:).

    opened by jmkk 15
  • Repetitive crashes with V0.6.0

    Repetitive crashes with V0.6.0

    Hello,

    Since we updated to V0.6.0, we are getting significant a amount of crash showing up in Crashlytics . We were not getting any crash with SocketRocket prior to this version.

    Here is the stack trace -[SafeDKCrashReporter length]: unrecognized selector sent to instance 0x281d3a6d0 Fatal Exception: NSInvalidArgumentException 0 CoreFoundation 0x129dc0 __exceptionPreprocess 1 libobjc.A.dylib 0x287a8 objc_exception_throw 2 CoreFoundation 0x2d2d0 -[NSOrderedSet initWithSet:copyItems:] 3 CoreFoundation 0x12c918 forwarding 4 CoreFoundation 0x12ec10 _CF_forwarding_prep_0 5 SocketRocket 0xe6f8 -[SRWebSocket _innerPumpScanner] + 1567 (SRWebSocket.m:1567) 6 SocketRocket 0xeb48 -[SRWebSocket _pumpScanner] + 1324 (SRWebSocket.m:1324) 7 SocketRocket 0xf3bc -[SRWebSocket safeHandleEvent:stream:] + 1514 (SRWebSocket.m:1514) 8 SocketRocket 0xf034 __34-[SRWebSocket stream:handleEvent:]_block_invoke_2 + 1429 (SRWebSocket.m:1429) 9 libdispatch.dylib 0x2a84 _dispatch_call_block_and_release 10 libdispatch.dylib 0x481c _dispatch_client_callout 11 libdispatch.dylib 0xc004 _dispatch_lane_serial_drain 12 libdispatch.dylib 0xcc00 _dispatch_lane_invoke 13 libdispatch.dylib 0x174bc _dispatch_workloop_worker_thread 14 libsystem_pthread.dylib 0x37a4 (Missing) 15 libsystem_pthread.dylib 0xa74c (Missing)

    Screenshot 2021-11-19 at 09 13 07 Screenshot 2021-11-19 at 08 52 52

    Any idea of what could go wrong?

    Thanks

    opened by skware 0
  • SRLog.h file not found

    SRLog.h file not found

    Hello,

    In 0.6.0 version I get this error SRLog.h' file not found I use swift and I'm good with 0.5.1

    Any Ideas Thank you in advance

    opened by mvorisis 0
  • SRWebSocket初始化的时候报错

    SRWebSocket初始化的时候报错

    Undefined symbols for architecture arm64: "OBJC_CLASS$_SRWebSocket", referenced from: objc-class-ref in XScoketManager.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

    opened by xuhuaping 0
  • Add Swift Package Manager support

    Add Swift Package Manager support

    null

    CLA Signed 
    opened by robnadin 5
  • iOS 14.7.1 Socket automatically close

    iOS 14.7.1 Socket automatically close

    I encountered that after creating the socket, it was automatically closed after 5-10 seconds.

    My iphone system: iOS 14.7.1; sdk version:0.6.0

    first step: I create a socket and open it, it wrok well; second step: I close the previous socket,Then I create a new socket and open it. Wait for 5-10 seconds,I receive delegate (webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString *)reason wasClean:(BOOL)wasClean), this socket close without any reason; third step: I create a new socket again, and open it,now the new socket work well.

    What the second socket wokr wrong? This BUG is inevitable.

    opened by cxz137131304 0
  • 如何设置自签名

    如何设置自签名

    自签名怎么配置

    opened by ZClee128 0
  • 4G can not connect

    4G can not connect

    When the network is switched to 4G, socketrocket cannot connect,

    opened by New007 0
  • Fix Basic Authorization header

    Fix Basic Authorization header

    Currently the Basic Authorization header is always added.

    CLA Signed 
    opened by ElfSundae 3
Releases(0.6.0)
Owner
Facebook Incubator
We work hard to contribute our work back to the web, mobile, big data, & infrastructure communities. NB: members must have two-factor auth.
Facebook Incubator
A conforming Objective-C WebSocket client library.

SocketRocket A conforming WebSocket (RFC 6455) client library for iOS, macOS and tvOS. Test results for SocketRocket here. You can compare to what mod

Facebook Incubator 9.3k Nov 18, 2021
Daniel Rhodes 157 Oct 19, 2021
WebSocket(RFC-6455) library written using Swift

DNWebSocket Object-Oriented, Swift-style WebSocket Library (RFC 6455) for Swift-compatible Platforms. Tests Installation Requirements Usage Tests Conf

Gleb Radchenko 31 Sep 29, 2021
socket.io-client-swift - Socket.IO-client for iOS/macOS.

Socket.IO-Client-Swift Socket.IO-client for iOS/OS X. Example import SocketIO let manager = SocketManager(socketURL: URL(string: "http://localhost:80

Socket.IO 4.6k Nov 26, 2021
🔌 Non-blocking TCP socket layer, with event-driven server and client.

Original authors Honza Dvorsky - http://honzadvorsky.com, @czechboy0 Matthias Kreileder - @matthiaskr1 At the request of the original authors, we ask

Vapor Community 569 Nov 19, 2021
Asynchronous socket networking library for Mac and iOS

CocoaAsyncSocket CocoaAsyncSocket provides easy-to-use and powerful asynchronous socket libraries for macOS, iOS, and tvOS. The classes are described

Robbie Hanson 12.1k Nov 24, 2021
A conforming Objective-C WebSocket client library.

SocketRocket A conforming WebSocket (RFC 6455) client library for iOS, macOS and tvOS. Test results for SocketRocket here. You can compare to what mod

Facebook Archive 9.3k Nov 18, 2021
A conforming Objective-C WebSocket client library.

SocketRocket A conforming WebSocket (RFC 6455) client library for iOS, macOS and tvOS. Test results for SocketRocket here. You can compare to what mod

Facebook Incubator 9.3k Nov 18, 2021
Daniel Rhodes 157 Oct 19, 2021
WebSocket(RFC-6455) library written using Swift

DNWebSocket Object-Oriented, Swift-style WebSocket Library (RFC 6455) for Swift-compatible Platforms. Tests Installation Requirements Usage Tests Conf

Gleb Radchenko 31 Sep 29, 2021
A csv parser written in swift conforming to rfc4180

CSwiftV A csv parser conforming (and tested as much) to rfc4180 i.e the closest thing to a csv spec. It is currently all in memory so not suitable for

Daniel Haight 161 Oct 9, 2021
A csv parser written in swift conforming to rfc4180

CSwiftV A csv parser conforming (and tested as much) to rfc4180 i.e the closest thing to a csv spec. It is currently all in memory so not suitable for

Daniel Haight 162 Nov 19, 2021
Anonymous chat app leveraging Google's Firebase, a NoSQL backend and WebSocket for real time data synching

Chaty Chaty is an anonymous chat app that allows millions of users to chat at the same time. Firebase is Google's real time NoSQL Backend as a Service

Terry Wang 365 Oct 2, 2021
JSPatch bridge Objective-C and Javascript using the Objective-C runtime. You can call any Objective-C class and method in JavaScript by just including a small engine. JSPatch is generally used to hotfix iOS App.

JSPatch 中文介绍 | 文档 | JSPatch平台 请大家不要自行接入 JSPatch,统一接入 JSPatch 平台,让热修复在一个安全和可控的环境下使用。原因详见 这里 JSPatch bridges Objective-C and JavaScript using the Object

bang 11.3k Nov 17, 2021
A Dropbox v2 client library written in Objective-C

TJDropbox TJDropbox is a Dropbox v2 client library written in Objective-C. When Dropbox originally announced their v2 API they included only a Swift c

Tim Johnsen 57 Nov 7, 2021
socket.io-client-swift - Socket.IO-client for iOS/macOS.

Socket.IO-Client-Swift Socket.IO-client for iOS/OS X. Example import SocketIO let manager = SocketManager(socketURL: URL(string: "http://localhost:80

Socket.IO 4.6k Nov 26, 2021
Exposure notification client application / Application client de notification d'exposition

La version française suit. COVID Alert Mobile App Available for iOS and Android: Pour iOS et Android: Adapted from https://github.com/CovidShield/mobi

Canadian Digital Service – Service numérique canadien 886 Nov 10, 2021
Giphy API client for iOS in Objective-C

Giphy-iOS Giphy-iOS is a Giphy API client for iOS in Objective-C. Usage To run the example project, clone the repo, and run pod install from the Examp

alex choi 52 Jul 11, 2019
Dr-Charts 3.1 0.0 L3 Objective-C is a highly customisable, easy to use and interactive chart / graph framework in Objective-C.

dr-charts Easy to use, customizable and interactive charts library for iOS in Objective-C Features: Multiple chart types Line / Multiple lines / Lines

Zomato 92 Feb 2, 2021
A stand-alone Swift wrapper around the MySQL client library, enabling access to MySQL servers.

Perfect - MySQL Connector This project provides a Swift wrapper around the MySQL client library, enabling access to MySQL database servers. This packa

PerfectlySoft Inc. 112 Oct 11, 2021
A stand-alone Swift wrapper around the mongo-c client library, enabling access to MongoDB servers.

Perfect - MongoDB Connector 简体中文 NOTE: This package is deprecated in favour of the official Mongo Swift Driver. We advise users to switch to that pack

PerfectlySoft Inc. 52 Apr 16, 2021
A stand-alone Swift wrapper around the libpq client library, enabling access to PostgreSQL servers.

Perfect - PostgreSQL Connector This project provides a Swift wrapper around the libpq client library, enabling access to PostgreSQL servers. This pack

PerfectlySoft Inc. 49 Aug 30, 2021
A stand-alone Swift wrapper around the SQLite 3 client library.

Perfect - SQLite Connector This project provides a Swift wrapper around the SQLite 3 library. This package builds with Swift Package Manager and is pa

PerfectlySoft Inc. 43 Jun 24, 2021
The HTTP library used by the Spotify iOS client

Authentication and back-off logic is a pain, let's do it once and forget about it! This is a library that allows you to centralise this logic and forg

Spotify 616 Nov 16, 2021
Client library for accessing Azure Storage on an iOS device

Azure Storage Client Library for iOS Overview This library is designed to help you build iOS applications that use Microsoft Azure Storage. At the mom

Microsoft Azure 78 Nov 26, 2021
Library Genesis iOS Client

LibraryGenesis This application is showing books from Library Genesis. If you found this project useful leave a star ⭐️ Features Search books with tit

MartinStamenkovski 23 Aug 11, 2021
A Swift client library for generating URLs with imgix

imgix-swift is a client library for generating image URLs with imgix. Written in Swift, but can be used with Objective-C codebases as well. Installati

imgix 22 Aug 27, 2021
A PostgreSQL client library for Swift. Does not require libpq.

PostgresClientKit PostgresClientKit provides a friendly Swift API for operating against a PostgreSQL database. Features Doesn't require libpq. Postgre

codewins.com 60 Nov 14, 2021
An Objective-C animation library used to create floating image views.

JRMFloatingAnimation [![CI Status](http://img.shields.io/travis/Caroline Harrison/JRMFloatingAnimation.svg?style=flat)](https://travis-ci.org/Caroline

Caroline Harrison 226 Aug 4, 2021