如何从 Socket.io 事件调用 RESTful API 服务



我想在服务器收到消息后将消息保存到数据库中 Socket.io。以下是我的事件在服务器端的外观 Socket.io:

socket.on('send_msg_to_user', function (data) {
    console.log('-------------send_msg_to_user------------------');
    if(data.type == "provider"){
        io.sockets.in("user_" + data.user_id + "_" + data.provider_id).emit('new_msg', {msg: data.message});
    }else if(data.type == "user"){
        io.sockets.in("provider_" + data.user_id + "_" + data.provider_id).emit('new_msg', {msg: data.message});
    }
    console.log('-------------save_message_to_database------------------');
    var xhr = new XMLHttpRequest();
    xhr.open("GET", "http://165.227.33.135/message/save?user_id=218&provider_id=206&message=hrthtrhtr&type=up&request_id=899", false);
    xhr.send();
});

第一部分运行良好。问题是当我尝试创建一个XMLHttpRequest对象时,我不能。这是我不断收到的错误。

引用错误: 未定义 XMLHttpRequest

我还尝试了另一种方式来调用我的Web服务,没有XMLHttpRequest:

socket.on('send_msg_to_user', function (data) {
    console.log('-------------send_msg_to_user------------------');
    if(data.type == "provider"){
        io.sockets.in("user_" + data.user_id + "_" + data.provider_id).emit('new_msg', {msg: data.message});
    }else if(data.type == "user"){
        io.sockets.in("provider_" + data.user_id + "_" + data.provider_id).emit('new_msg', {msg: data.message});
    }
    console.log('-------------save_message_to_database------------------');
    url = 'http://165.227.33.135//message/save?user_id=' + data.user_id
        + '&provider_id=' + data.provider_id
        + '&message=' + data.message
        + '&type=' + data.type
        + '&request_id=' + socket.reqid;
    request(url, function (error, response, body) {
        if (!error && response.statusCode == 200) {
            console.log(body);
        }
    });
});

在这种情况下,似乎没有按预期触发 Web 服务,并且 Web API 返回基本的 404 错误。

> XMLHttpRequest 不是 node 中的默认包(我猜你的服务器正在使用 node.js)。您可以将任何节点包用于请求,例如request https://github.com/request/request

节点还有一个单独的xmlhttprequest包:https://www.npmjs.com/package/xmlhttprequest

相关内容

  • 没有找到相关文章

最新更新