nchat 0.0.2
nchat: ^0.0.2 copied to clipboard
A pure Dart/Flutter chat SDK for NBase platform with real-time messaging, GraphQL API, Socket.IO support, and multi-region capabilities.
example/lib/main.dart
import 'package:nchat/nchat.dart';
/// NChat SDK 사용 예제
void main() async {
// 1. NChat 인스턴스 생성
final nchat = NChat();
try {
// 2. SDK 초기화
print('Initializing...');
final initialize = await nchat.initialize(
projectId: 'YOUR_PROJECT_ID',
region: 'kr',
language: 'ko',
);
print('✅ Initialized: ${initialize.platform}');
// 3. 이벤트 핸들러 등록
nchat.addHandler('example_handler', ExampleChatHandler());
// 4. 사용자 연결
print('\nConnecting...');
final user = await nchat.connect(
userId: 'test_user_${DateTime.now().millisecondsSinceEpoch}',
name: 'Test User',
profile: 'https://example.com/avatar.jpg',
);
print('✅ Connected: ${user.name} (ID: ${user.id})');
// 5. 채널 생성
print('\nCreating channel...');
final channel = await nchat.createChannel(
type: 'PUBLIC',
name: 'Test Channel',
customField: '{"description": "This is a test channel"}',
);
print('✅ Channel created: ${channel.name} (ID: ${channel.id})');
// 6. 채널 구독
print('\nSubscribing to channel...');
await nchat.subscribe(channel.id);
print('✅ Subscribed to channel');
// 7. 메시지 전송
print('\nSending message...');
final message = await nchat.sendMessage(
channelId: channel.id,
content: 'Hello, NChat!',
type: 'TEXT',
);
print('✅ Message sent: ${message.content}');
// 8. 메시지 조회
print('\nFetching messages...');
final messageData = await nchat.getMessages(
filter: {'channelId': channel.id},
sort: {'created_at': -1},
options: {'limit': 10},
);
print('✅ Total messages: ${messageData.totalCount}');
for (var msg in messageData.messages) {
print(' - ${msg.sender?.name ?? "Unknown"}: ${msg.content}');
}
// 9. 채널 목록 조회
print('\nFetching channels...');
final channelData = await nchat.getChannels(
filter: {'subscribed': true},
sort: {'created_at': -1},
options: {'limit': 10},
);
print('✅ Total channels: ${channelData.totalCount}');
for (var ch in channelData.channels) {
print(' - ${ch.name} (Type: ${ch.type})');
}
// 10. 대기 (실시간 이벤트 수신을 위해)
print('\nListening for events... (Press Ctrl+C to exit)');
await Future.delayed(Duration(seconds: 30));
// 11. 정리
print('\nCleaning up...');
await nchat.unsubscribe(channel.id);
await nchat.disconnect();
print('✅ Disconnected');
} catch (e) {
print('❌ Error: $e');
}
}
/// 예제 ChatHandler 구현
class ExampleChatHandler extends SimpleChatHandler {
@override
void onMessageReceived(Message message) {
print('📨 New message from ${message.sender?.name}: ${message.content}');
}
@override
void onConnected() {
print('🔌 Socket connected!');
}
@override
void onDisconnected(String reason) {
print('🔌 Socket disconnected: $reason');
}
@override
void onErrorReceived(String error) {
print('❌ Socket error: $error');
}
@override
void onMemberJoined(Member member) {
print('👋 Member joined: ${member.name}');
}
@override
void onMemberLefted(Member member) {
print('👋 Member left: ${member.name}');
}
@override
void onStartTyping(String option) {
print('⌨️ Someone is typing...');
}
@override
void onStopTyping(String option) {
print('⌨️ Typing stopped');
}
}