Suggestions

close search

Connect to Stringee Server

To connect to Stringee Server, 3-party authentication is required as described here: Client authentication

For testing, go to Dashboard -> Tools -> Generate Access token and generate an access_token. In production, your server should generate the access_token. See the access token examples.

  1. Initialize StringeeClient, StringeeChat:

    import 'dart:async';
    import 'package:stringee_plugin/stringee_plugin.dart';
    ...
    final StringeeClient client = StringeeClient();
    final StringeeChat chat = StringeeChat(client);
    StreamSubscription? clientSubscription;
    StreamSubscription? chatSubscription;
  2. Register the client's events in your State

    // Listen for the StringeeClient event
    clientSubscription = client.eventStreamController.stream.listen((event) {
        Map<dynamic, dynamic> map = event;
        switch (map['eventType']) {
            case StringeeClientEvents.didConnect:
                handleDidConnectEvent();
                break;
            case StringeeClientEvents.didDisconnect:
                handleDidDisconnectEvent();
                break;
            case StringeeClientEvents.didFailWithError:
                int code = map['body']['code'];
                String msg = map['body']['message'];
                handleDidFailWithErrorEvent(code,msg);
            break;
            case StringeeClientEvents.requestAccessToken:
                handleRequestAccessTokenEvent();
                break;
            case StringeeClientEvents.didReceiveCustomMessage:
                handleDidReceiveCustomMessageEvent(map['body']);
            break;
            case StringeeClientEvents.userBeginTyping:
                handleUserBeginTypingEvent(map['body']);
            break;
            case StringeeClientEvents.userEndTyping:
                handleUserEndTypingEvent(map['body']);
            break;
            default:
            break;
        }
    });
    ...
    chatSubscription = chat.eventStreamController.stream.listen((event) {
        Map<dynamic, dynamic> map = event;
        if (map['eventType'] == StringeeChatEvents.didReceiveObjectChange) {
            handleDidReceiveObjectChangeEvent(map['body']);
        }
    });
    ...
    /// Invoked when the StringeeClient is connected
    void handleDidConnectEvent() {}
    
    /// Invoked when the StringeeClient is disconnected
    void handleDidDisconnectEvent() {}
    
    /// Invoked when the StringeeClient connection fails
    void handleDidFailWithErrorEvent(int code, String message) {}
    
    /// Invoked when your token is expired
    void handleRequestAccessTokenEvent() {}
    
    /// Invoked when get Custom message
    void handleDidReceiveCustomMessageEvent(Map<dynamic, dynamic> map) {}
    
    /// Invoked when a user sends a begin typing event
    void handleUserBeginTypingEvent(Map<dynamic, dynamic> map) {}
    
    /// Invoked when a user sends an end typing event
    void handleUserEndTypingEvent(Map<dynamic, dynamic> map) {}
    
    /// Invoked when a chat change event is received
    void handleDidReceiveObjectChangeEvent(StringeeObjectChange stringeeObjectChange) {}
  3. Connect

    String token = 'PUT YOUR TOKEN HERE';
    client.connect(token);
  4. Before connecting as a different authenticated user, call disconnect() on the StringeeClient object and clearDb() on the StringeeChat object:

    await client.disconnect();
    await chat.clearDb();
    client.connect(newUserToken);