【问题标题】:How to receive parameters sent from a socket.io emit event using baconJS?如何使用 baconJS 接收从 socket.io 发射事件发送的参数?
【发布时间】:2023-03-27 05:07:01
【问题描述】:

我需要一些有关 socket.io 和 bacon.JS 的帮助:

我在客户端有一个 socket.IO 发出事件,它向服务器发送 2 个参数,如下所示:

$("#btn").asEventStream("click").onValue(function(){
    socket.emit("event", param1, param2);
});

然后在服务器端,我需要接收这 2 个参数,以便我可以对它们进行处理。

按照this answer 上的示例,我尝试做这样的事情:

    io.on('connection', function (socket) {
        socket.on('error', function (err) {
            console.log(err);
        });

        Bacon.fromEvent(socket, "event", param1, param2)
            .filter(function(param1, param2){ return true })
            .forEach(function(param1, param2){
                doStuff(param1, param2);
            });
    });

但是没有用。

总结一下,我需要将服务器上的事件作为EventStream接收,并使用参数。

谁能帮帮我?

【问题讨论】:

    标签: javascript node.js websocket socket.io bacon.js


    【解决方案1】:

    我解决了!

    原来你使用 bacon.js + socket.io 组合发送 objects

    当您以对象作为参数发出 socket.io 事件时,您可以在事件流中捕获此事件,该流上的每个事件实际上都是您作为参数发送的对象。

    所以我做的是:

    //client side
    $("#btn").asEventStream("click").onValue(function(){
        var obj = {p1: param1, p2: 'param2'};
        socket.emit("someEvent", obj);
    });
    
    //server side
    Bacon.fromEvent(socket, "someEvent")
        .onValue(function(data){
            doStuff(data.p1, data.p2);
        });
    

    或者你也可以对这个对象做一些事情,然后返回一个套接字事件并返回结果,像这样:

    //server side
    
    //doStuff can return anything, it doesn't have to be an object
    function doStuff(data){if data.p2 === 'param2' {return true}};
    
    Bacon.fromEvent(socket, "someEvent")
        .map(function (data) { return doStuff(data) })
        .onValue(socket, "emit", "returnEvent");
    

    然后您可以在客户端捕获返回事件,并且此生成的 EventStream 上的每个事件都将是“doStuff”函数的返回:

    //client side
    Bacon.fromEvent(socket, "returnEvent")
        .onValue(function(data){
            console.log(data);
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-11
      • 2021-10-22
      • 2019-09-12
      • 2017-04-10
      • 1970-01-01
      • 2013-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多