Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
An objc draft 10 websocket implementation
Objective-C
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
GCDAsyncSocket.h
GCDAsyncSocket.m
MBWebSocketServer.h PINGPONG
MBWebSocketServer.m
README.md Unmaintained

README.md

Warning!

I do not maintain this anymore. You should become the new active fork, or ask me to make you a collaborator here.

The last time I did use it, it was working well.

MBWebSocketServer

A websocket server implementation, (you cannot instantiate an instance that does not bind to a port).

NOTE! I have not tested it extensively and there are many old WS versions. So you may well have to hack it to make it work. But! There is not much code. And! I believe it is quite readable. I will help! Mail me!

Tested against recent Chrome, Safari and Firefox versions. Only tested on Mac.

If you want a client implementation, use Square’s SocketRocket.

Caveats

  • There's no support for fragmented frames.

Requirements

  • ARC or Garbage Collection
  • Xcode 4.5

Example Usage

- (void)applicationDidFinishLaunching:(NSNotification *)note {
    self.ws = [[MBWebSocketServer alloc] initWithPort:13581 delegate:self];
}

- (void)webSocketServer:(MBWebSocketServer *)webSocketServer didAcceptConnection:(GCDAsyncSocket *)connection {
    NSLog(@"Connected to a client, we accept multiple connections");
}

- (void)webSocketServer:(MBWebSocketServer *)webSocket didReceiveData:(NSData *)data fromConnection:(GCDAsyncSocket *) {
    NSLog(@"%@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);

    [connection writeWebSocketFrame:@"Thanks for the data!"]; // you can write NSStrings or NSDatas
}

- (void)webSocketServer:(MBWebSocketServer *)webSocketServer clientDisconnected:(GCDAsyncSocket *)connection {
    NSLog(@"Disconnected from client: %@", connection);
}

- (void)webSocketServer:(MBWebSocketServer *)webSocketServer couldNotParseRawData:(NSData *)rawData fromConnection:(GCDAsyncSocket *)connection error:(NSError *)error {
    NSLog(@"MBWebSocketServer error: %@", error);
}

Author

I’m Max Howell and I'm a splendid chap

Something went wrong with that request. Please try again.