我在这里和各种其他网站上发现了很多关于如何让socket.io在android phonegap应用程序中工作的帖子,不幸的是我似乎仍然遇到了问题。如果你有任何设置这种东西的经验,你可以给予的任何指示都会非常感激,现在花了好几天撕掉我的头发:P
所以要开始,我有一个非常简单的socket.io服务器设置并在我的本地机器上运行:
var server = require('http').createServer();
var io = require('socket.io')(server);
io.sockets.on('connection', function (socket) {
console.log('socket connected');
socket.on('disconnect', function () {
console.log('socket disconnected');
});
socket.emit('text', 'wow. such event. very real time.');
});
server.listen(3000);
我从我找到的其中一个教程中得到的,似乎工作正常。
现在我的phonegap应用程序中的所有代码如下:
var app = angular.module("MyApp", [
"MyCtrl"
]);
app.controller("AppCtrl", ["$scope", function ($scope) {
console.log("About to attempt a connection (" + socket + ")!");
var socket = io("10.0.5.159:3000");
socket.on("connect", function(data) {
console.log("Connected: " + data);
});
socket.on("error", function(err) {
console.log("Error: " + err);
});
}]);
只是一个基本的angular.js应用程序,其中一个控制器尝试连接到服务器(提供的IP地址是我本地网络上正确的IP地址)。我的日志被点击所以我知道这个代码被执行了,但我从来没有得到连接事件或错误事件,并且控制台中没有出现任何错误,它似乎无声地失败。我在服务器上也没有连接事件。
根据另一个stackoverflow帖子,我确保我的config.xml包含相应的
<access origin="10.0.5.159*" />
条目。但我似乎仍无处可去。相同的代码行
var socket = io("10.0.5.159:3000");
在safari浏览器窗口中执行时,完全符合预期,我的服务器记录连接事件,因此我确信服务器和连接代码有效。
任何想法我可能做错了什么?
答案 0 :(得分:0)
您的代码无法正常工作,因为在服务器端您已发出&#34; text&#34;因此,在客户端,您应该编写socket.on(&#34; text&#34;)
在服务器端,您无法发出&#34; connect&#34;和&#34;错误&#34;事件然后你应该如何在客户端获得这些事件。我不认为普通的socket.js适用于Angular js,你必须添加Angular.js socket.io库。