Javascript 如何从Socket.io事件调用RESTful Api服务?
我想在Socket.io服务器收到消息后将消息保存到数据库中。以下是我的事件在o服务器端的外观:Javascript 如何从Socket.io事件调用RESTful Api服务?,javascript,web-services,sockets,socket.io,Javascript,Web Services,Sockets,Socket.io,我想在Socket.io服务器收到消息后将消息保存到数据库中。以下是我的事件在o服务器端的外观: 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 + "_" +
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对象时,我不能。这是我一直收到的错误
ReferenceError:未定义XMLHttpRequest
我还尝试了另一种不用XMLHttpRequest调用我的Web服务的方法:
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
节点还有一个单独的
xmlhttprequest
包:xmlhttprequest
不是节点中的默认包(我猜您的服务器使用的是node.js)。您可以将任何节点包用于请求,如request
还有一个单独的
xmlhttprequest
节点包:xmlhttprequest在浏览器API上。在这里,您将在节点应用程序中使用它。我相信您需要单独安装它,或者按照您对请求库所做的操作进行安装。404是一个找不到的错误,因此请确保您构建的url是正确的。尝试使用http模块节点,请查看我的问题。我需要关于插座的帮助。我的问题URL是XMLHttpRequest是否在浏览器API上。在这里,您将在节点应用程序中使用它。我相信您需要单独安装它,或者按照您对请求库所做的操作进行安装。404是一个找不到的错误,因此请确保您构建的url是正确的。尝试使用http模块节点,请查看我的问题。我需要关于插座的帮助。我的问题是