首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将对象写入flux

将对象写入flux
EN

Stack Overflow用户
提问于 2020-06-14 23:54:01
回答 1查看 41关注 0票数 0

我想在flux中添加一个对象,这样订阅者就会被触发。这就是我到目前为止所得到的,但是write不是一个函数:

代码语言:javascript
复制
@Controller
class LobbyRSocketController() {

        data class Lobby(val player_1_token: Int, val player_2_token: Int, val game_id: Int) {
@Autowired lateinit var game: Game }

    data class Header(val playerToken: Int)
    val playersInQueue = HashMap<Int, Flux<Int>>()
    val lobbies = ArrayList<Lobby>()

    @MessageMapping("matchmaking")
    fun joinMatchmaking(header: Header): Flux<Int> {
        val playerToken = header.playerToken
        if (playersInQueue.containsKey(playerToken)) return Flux.just(-1)
        val flux = Flux.empty<Int>()
        playersInQueue[playerToken] = flux
        matchmake()
        return flux
    }

    fun matchmake() {
        if (lobbies.size >= 2) {
            val iter = playersInQueue.iterator()
            val gameId = IdGenerator.nextGameId
            val player1 = iter.next()
            val player2 = iter.next()
            lobbies.add(Lobby(player1.key, player2.key, gameId))
            player1.value.write(gameId)
            player2.value.write(gameId)
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-15 01:11:52

这是我将使用的:

代码语言:javascript
复制
fun main(args: Array<String>) {
    val processor = DirectProcessor.create<Int>().serialize()
    val sink = processor.sink()
    val flux = processor.map { x -> x }

    flux.subscribe({ x: Int -> System.out.println(x)})

    sink.next(1)
    sink.next(2)
    sink.next(5)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62374880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档