如何在Ffutter中将Laravel Echo与Socket.io结合使用

问题描述

我正在开发一个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'));