Как выполнить функцию с указанным параметром внутри функции соединения socket.io - PullRequest
0 голосов
/ 30 октября 2018

Мне нужна помощь с обратными вызовами в моем приложении node.js. Я работаю с socket.io для передачи данных. Мне нужно создать функцию с параметром emit и конкретным параметром, который вычисляется вне скобок io.on ('connection'). Мне нужно запустить эту внутреннюю функцию только тогда, когда я вычислю параметр позже в моем приложении. Как я могу это сделать?

Пример кода:

io.on('connection', (socket) => {
    function name(param)
    {
        socket.emit('name', param);
    }
    //rest of the socket.io code
}

//function that calculates the param to be executed above^
function()
{
    var param = somevalue;
    //How can i execute function that is in io.on brackets and pass the param to it from here?
}

Ответы [ 3 ]

0 голосов
/ 30 октября 2018

Вы можете вызвать свою функцию из вашего события .on следующим образом:

io.on('connection', (socket) => {
    var calculatedParam = calParam(param); //Assuming param exists in the current context...
    socket.emit('name', calculatedParam);
    //rest of the socket.io code
}

//function that calculates the param to be executed above^
function calParam(p)
{
    var calcP = p; //Obviously calculate something here...
    return calcP;
}
0 голосов
/ 30 октября 2018
io.on('connection', (socket) => {
    // 10 is "param" in Hello
    Hello(10, function(result){
        console.log("Result from Hello function: " + result);

        // you have still access to socket

    });
}

function Hello(param, callback)
{
    // code etc
    var result = param + 1;

    callback(result);
}
0 голосов
/ 30 октября 2018

Вы можете присвоить возвращаемое значение io переменной и использовать ее для выдачи событий при необходимости. Как то так:

var socket = io('http://localhost');
socket.on('connect', function(){});
socket.on('disconnect', function(){});

io.on('event', (socket) => {
    getParam();
}

function name(param) {
    socket.emit('name', param);
}

function getParam()
{
    var param = somevalue;
    name(param);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...