问题描述
我正在开发一个Flutter项目,该项目使用Laravel echo和socket.io在后端进行聊天。使用Laravel echo包在Web版本中实现起来非常容易,但是对于Flutter使用什么连接和侦听事件我一无所知。请帮助我!
解决方法
您可以关注this blog。
以下是两种简单的方法:
sendSingleChatMessage(ChatMessageModel chatMessageModel,User toChatUser) {
print('Sending Message to: ${toChatUser.name},ID: ${toChatUser.id}');
if (null == _socket) {
print("Socket is Null,Cannot send message");
return;
}
_socket.emit("single_chat_message",[chatMessageModel.toJson()]);
}
setOnChatMessageReceivedListener(Function onChatMessageReceived) {
_socket.on(ON_MESSAGE_RECEIVED,(data) {
print("Received $data");
onChatMessageReceived(data);
});
}
编辑: here中还有另一个软件包可以使用。
// Create echo instance
Echo echo = new Echo({
'broadcaster': 'socket.io','client': IO.io,});
// Listening public channel
echo.channel('public-channel').listen('PublicEvent',(e) {
print(e);
});
// Listening private channel
// Needs auth. See details how to authorize channel below in guides
echo.private('private-channel').listen('PrivateEvent',(e) {
print(e);
});
// Listening presence channel
// Needs auth. See details how to authorize channel below in guides
echo.join('presence-channel')
.here((users) {
print(users);
}).joining((user) {
print(user);
}).leaving((user) {
print(user);
}).listen('PresenceEvent',(e) {
print(e);
});
// Accessing socket instance
echo.socket.on('connect',(_) => print('connected'));
echo.socket.on('disconnect',(_) => print('disconnected'));