A React Native wrapper for the Socket.io Swift Library
The wrapped 'Socket.IO-Client-Swift' can be found here.
Example
I've also added a super simple example app to /examples, copy and paste to your index.ios.js.
/*** Pass in an optional config obj, this can include most of the* standard props supported by the swift library*/var socketConfig = path: '/socket' ;var socket = 'localhost:3000' socketConfig;// Connect!socket;// An event to be fired on connection to socketsocket;// Event called when 'someEvent' it emitted by serversocket;// Called when anything is emitted by the serversocket;// Manually join namespacesocket// Leave namespace, back to '/'socket// Emit an event to serversocket;// Optional boolean param 'fast' - defaults to falsesocket;// Reconnect to a closed socketsocket;
Constructor
Requires:
host
- example: 'localhost:3000'
Optional:
config
- JSON object comprising any of the options listed below.
Config
connectParams: Any Object
- Any data to be sent with the connection.reconnects: Boolean
Default istrue
reconnectAttempts: Int
Default is-1
(infinite tries)reconnectWait: Number
Default is10
forcePolling: Boolean
Default isfalse
.true
forces the client to use xhr-polling.forceWebsockets: Boolean
Default isfalse
.true
forces the client to use WebSockets.nsp: String
Default is"/"
. Connects to a namespace.log: Bool
Iftrue
socket will log debug messages. Default is false.path: String
- If the server uses a custom path. ex:"/swift"
. Default is""
Not supported yet but easy enough to implement.
cookies: [NSHTTPCookie]?
An array of NSHTTPCookies. Passed during the handshake. Default is nil.sessionDelegate: NSURLSessionDelegate
Sets an NSURLSessionDelegate for the underlying engine. Useful if you need to handle self-signed certs. Default is nil.
Methods
connect
- Connect to socketon
- Add event handler to socket@param
- String - event name@param
- Function - callback
onAny
- Add event handler to any event@param
- Function - callback
emit
- Emit an event to server@param
- String - Event name@param
- Anything - Data to be sent
close
- Close the connection@param
- Boolean - should close fast?
reconnect
- Reconnect to a closed connectionjoinNamespace
- Manually join namespaceleaveNamespace
- Leave namespace, back to '/'
Known issues
- Would rather this in an xcode framework but run into non-modular header issue.
Install
- Run in your project:
$ npm install react-native-swift-socketio
- Open up your project in xcode and right click the package.
- Click Add files to 'Your project name'
- Navigate to /node_modules/react-native-swift-socketio/RNSwiftSocketIO
- Click 'Add'
- Click your project in the navigator on the left and go to build settings
- Search for Objective-C Bridging Header
- Double click on the empty column
- Enter node_modules/react-native-swift-socketio/RNSwiftSocketIO/SocketBridge.h
... That should do it! Please let me know of any issues ...