Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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
Javascript socket.io能否跨域工作?_Javascript_Html_Node.js_Sockets_Socket.io - Fatal编程技术网

Javascript socket.io能否跨域工作?

Javascript socket.io能否跨域工作?,javascript,html,node.js,sockets,socket.io,Javascript,Html,Node.js,Sockets,Socket.io,我有一个socket.io实现,我试图让它跨域工作,但它似乎不能。下面是我的确切用例: 我有一个运行socket.io的node.js服务器 我有一个JS/HTML5游戏,我希望能够从任何地方托管,它有client socket.io代码并尝试连接到服务器 我通过SpiderMonkey在移动设备上运行相同的JS代码(这是我需要从任何域运行此代码的主要原因之一) 我发现,除非我将JS代码从node.JS服务器提供给浏览器,否则我无法连接到套接字。例如,如果我只是从浏览器中打开磁盘上的HTML

我有一个socket.io实现,我试图让它跨域工作,但它似乎不能。下面是我的确切用例:

  • 我有一个运行socket.io的node.js服务器
  • 我有一个JS/HTML5游戏,我希望能够从任何地方托管,它有client socket.io代码并尝试连接到服务器
  • 我通过SpiderMonkey在移动设备上运行相同的JS代码(这是我需要从任何域运行此代码的主要原因之一)
我发现,除非我将JS代码从node.JS服务器提供给浏览器,否则我无法连接到套接字。例如,如果我只是从浏览器中打开磁盘上的HTML文件,它将无法工作

服务器代码:

io.on( "connection", function( socket )
    {
        this.socket = socket;
        this.socket.on( "echo", function( str ){ this.socket.emit( "message", str ); }.bind( this ) );
    }.bind( this ) );
客户端代码:

this.socket = io.connect( ip );
this.socket.on("message", function( str ) { console.log( str ); } );
我甚至无法连接,我得到打印结果,它正在尝试连接,但从未成功,然后开始抛出ping错误。那么,这可能吗?或者我必须用长时间的投票或者其他什么

错误:

[Error] Failed to load resource: A server with the specified hostname could not be found. (socket.io, line 0)
额外信息:
如果我试图使用从磁盘打开的HTML文件进行连接,则此操作将不起作用file:///. 我将在同一网络上的不同机器上进行尝试…

是的,Socket.IO可以跨域正常工作。实际的Socket.IO库可以/应该从托管它的服务器加载

额外信息:如果我试图使用从磁盘打开的HTML文件进行连接,则此操作将不起作用file:///.

不要那样做。当从磁盘加载文件与通过HTTP加载文件时,您会遇到各种奇怪的问题

加载资源失败:找不到具有指定主机名的服务器


这通常意味着您尝试连接的主机名无法解析,这表明存在DNS问题或您键入了主机名。在任何情况下,您的代码示例都不会显示问题所在的相关部分。使用浏览器的开发人员工具首先确定所有内容都已正确加载。然后,验证您尝试连接的地址。

听起来好像
ip
无效。设置为什么?“开发工具网络”选项卡上说请求发生了什么?请尝试直接在
浏览器中访问您的URL
,查看该
是否连接了
。如果是这样,那么这可能是一些握手问题…ip是localhost:13375。如果我制作一个index.html,我就可以从我的浏览器连接到它。如果你的node.js服务器可以监听传入的连接,为什么它不能同时向客户端提供socket.io.js脚本?因为我通过Spidermonkey在手机上运行一个应用程序,所以据我所知,唯一的方法就是通过web视图来实现。是的,我做了一个测试,从托管的web服务器(而不是文件://)运行socket.io,它工作正常。现在我需要看看这是否可以与Spidermonkey一起使用。。。