Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对打开socket.io连接的url的ajax调用失败_Ajax_Socket.io - Fatal编程技术网

对打开socket.io连接的url的ajax调用失败

对打开socket.io连接的url的ajax调用失败,ajax,socket.io,Ajax,Socket.io,我有一个node.js服务器正在运行。它通过socket.IO接受消息 我需要从某个设备向服务器发送消息。这个设备支持Javascript,但不支持socket.IO命令(这很奇怪,但我就是这么做的) 我试着用以下方法解决这个问题: 在我的服务器上,我放置了一个send.html文件,用于发送socket.IO消息: <script src="https://cdn.socket.io/socket.io-1.2.0.js"></script> <script>

我有一个node.js服务器正在运行。它通过socket.IO接受消息

我需要从某个设备向服务器发送消息。这个设备支持Javascript,但不支持socket.IO命令(这很奇怪,但我就是这么做的)

我试着用以下方法解决这个问题:

在我的服务器上,我放置了一个send.html文件,用于发送socket.IO消息:

<script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
<script>
  var socket = io('http://localhost:3000/');
  socket.emit('message', 'messages sent');
</script>

变量套接字=io('http://localhost:3000/');
emit('message','messages sent');
如果我只调用这个文件(localhost/send.html),那么一切正常

然后我尝试通过ajax从设备调用send.html:

<script>
  var xmlhttp = new XMLHttpRequest();

   xmlhttp.open("POST", "http://localhost/send.html", true);
   xmlhttp.send();
</script>

var xmlhttp=new XMLHttpRequest();
open(“POST”http://localhost/send.html“,对);
xmlhttp.send();
和。。什么也没发生

如果我尝试从设备调用任何其他.html文件,那么它就会工作。这使我认为,由ajax调用的文件无法打开socket.IO连接

然而,我在任何地方都找不到这个事实,无论如何,我仍然需要找到一种方法将数据从设备发送到socket.IO


是否有人知道如何解决这个问题,或者可以想出一个替代解决方案?

该文件是否在与套接字文件相同的主机上发送Ajax请求?如果没有,则必须在套接字文件中设置一个头,如:Access Control Allow Origin:*在本地测试时,这通常是一个问题&发送方和接收方在不同的端口上运行。这就违反了CORS。例如,我的应用程序服务器运行在localhost:8500上,但我的Angular 4项目运行在localhost:4200上。我必须将“Access Control Allow Origin”头设置为“*”,以解决此问题。该文件是否在与套接字文件相同的主机上发送Ajax请求?如果没有,则必须在套接字文件中设置一个头,如:Access Control Allow Origin:*在本地测试时,这通常是一个问题&发送方和接收方在不同的端口上运行。这就违反了CORS。例如,我的应用程序服务器运行在localhost:8500上,但我的Angular 4项目运行在localhost:4200上。我必须将“Access Control Allow Origin”标题设置为“*”,以解决此问题。