如何在Android中使用带有Socket.io的Flows



在服务器端,我有一个WebSocket,它发出;会话对象";经常向其客户发送。

const session = {
...
}
io.emit("session_obj", session)

现在,在Android方面,我想在FlowBuilder中收集这个会话对象,并将会话对象发送到ViewModels中的收集器。

class MainRepositoryImpl @Inject constructor(
socket: Socket
) : MainRepository {
override fun getRealtimeSessionObject(): Flow<Command> {
/*
* socket.on("session_obj") {
*     val session = it[0] as JSONObject
* }
*/
// But how will I return as a flow that can emit the data to ViewModels?
}
}

您可以使用SharedFlowViewModel发送数据,这是一个热数据流。用法示例:

private val dataFlow = MutableSharedFlow<Command>(extraBufferCapacity = 128)
fun getRealtimeSessionObject(): Flow<Command> {
socket.on("session_obj") {
val session = it[0] as JSONObject
// ...
dataFlow.tryEmit(command)
}
return dataFlow
}

extraBufferCapacity—缓冲的值数。

最新更新