MegaBits / SIOSocket

Realtime iOS application framework (client) http://socket.io
MIT License
494 stars 80 forks source link

Where can I set the authentication token? #62

Open katsuo555 opened 9 years ago

katsuo555 commented 9 years ago

I am developing a application of two-way communication in SocketIO between App of iPhone and server.

I would like to implement the authentication function when connecting from the application side to the chat server.

I have implemented on the server side as described below.

io.set('authorization', function (handshakeData, callback) {

    var token = handshakeData.query.token;

    checkAuthToken(token, callback);

});

However, I do not know where I should set the token in the app side.

var socket:SIOSocket! = nil

SIOSocket.socketWithHost("ServerUrl" , response: { (_socket: SIOSocket!) in
    self.socket = _socket

    println(self.socket)

    self.socket.onConnect = {() in
       println("connected")

    }
})

To borrow your wisdom.

danipralea commented 8 years ago

I use it in the connection block:

NSDictionary * parameters = [NSDictionary dictionaryWithObject:token forKey:@"token"];
    NSArray * parametersArray = [NSArray arrayWithObject:parameters];

    [SIOSocket socketWithHost:serverURL response: ^(SIOSocket *socket){
        self.socket = socket;

        self.socket.onConnect = ^ () {
            if ([GabAuthenticatedUser sharedUser].token) {
                NSLog(@"SIOSocket : web socket connected. Authenticating with parameters : %@", parameters);
                [socket emit: @"authenticate" args:parametersArray];
            }
        };

        self.socket.onDisconnect = ^ () {
            NSLog(@"SIOSocket : web socket disconnected!");
        };

        self.socket.onError = ^(NSDictionary* error) {
            NSLog(@"SIOSocket : error connecting to web socket : %@", error);
        };
    }];
taylorbk commented 8 years ago

An even more straightforward method that I personally used:

NSString *url = [NSString stringWithFormat:@"http://localhost:3000?token=%@",token];
[SIOSocket socketWithHost: url response: ^(SIOSocket *socketer) {
...

Works like a charm!