Socket.io + PhoneGap
Socket.io + PhoneGap
当我尝试将 Socket.IO 与PhoneGap一起使用时,出现此错误:
(在应支持 socket.io 的 iOS 上)
访问控制允许原点不允许
源空。
这是因为我的应用程序是通过file://
协议提供的。我能做些什么来解决这个问题?
谢谢!!
您必须将socketio主机添加到PhoneGap.plist中的"ExternalHosts"键中。
请参阅常见问题解答:
问:外部主机的链接和导入的文件无法加载?
一个。最新代码具有新的白名单功能。如果要引用外部主机, 您必须在PhoneGap.plist中的"外部主机"键下添加主机。通配符是可以的。 因此,如果要连接到"http://phonegap.com",则必须将"phonegap.com"添加到列表中(或使用通配符"*.phonegap.com" 这也将匹配子域)。(注意:如果您打开 plist 文件,您无需摆弄 XML 语法。
对于安卓,您必须编辑 cordova.xml并添加对 socketio 主机的访问权限:
<access origin="HOST*"/>
索引.html(带有套接字示例):
...
<script src="HOST/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('HOST');
socket.on('news', function (data) {
socket.emit('my other event', { my: 'data' });
});
</script>
...
app.js(服务器端JavaScript/Basic socketio示例):
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
您必须用 socket.io 服务器的主机名替换的主机!
PhoneGap 使用 file:// 协议打开网页
使用 file:// 协议时,WebSocket 连接没有设置源,因此如果服务器未将访问控制允许源标头设置为启用 CORS 的响应,浏览器将引发该安全异常
考虑使用一些像下面这样的PhoneGap插件,它使用本机代码来处理连接,但在Web视图中启用(希望是标准兼容的)WebSocket API
。安卓:https://github.com/anismiles/websocket-android-phonegap
苹果手机:https://github.com/remy/PhoneGap-Plugin-WebSocket
这些插件只是我发现的第一个插件,不确定它们在积极开发和稳定的情况下
因此,如果在PhoneGap中使用 file://url协议打开的网页是发送标头"Access-Control-Allow-Origin: *" - 理论上它应该都可以与 socket.io 一起使用?
(可以通过NSURLProtocol做到这一点,但我不想在不知道修复程序的情况下进入这个兔子洞)
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- Phonegap-(安卓/iphone)多个图像的图像库出现问题
- angular.js没有'无法在PhoneGap中处理视图标记
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 在phonegap应用程序内部重定向不起作用
- 压缩phonegap中ios的图像插件
- 如何使用Socket.io将命令从客户端发送到服务器
- 谷歌地图API v3不适用于移动浏览器或PhoneGap
- 尝试使用Phonegap进行php登录
- Webdriver.io pageObject模式-通过传递参数来定义元素选择器
- 从手机中选择多个图像'使用phonegap的多媒体资料
- cordova-2.0.0.js不适用于使用phonegap的android
- Socket.io + PhoneGap
- LinkedIn是否在其iPhone应用程序中使用PhoneGap或 Trigger.IO?
- parse.com REST API,使用build.phonegap Javascript推送通知Android和iO
- Cordova / Phonegap oauth.IO弹出框不显示
- 有Phonegap集成插座.IO版本3.5.0-0.20.10
- io.connect无法在PhoneGap中工作