让socket.io与手机差距一起工作

时间:2015-01-18 11:24:02

标签: android angularjs sockets cordova socket.io

我在这里和各种其他网站上发现了很多关于如何让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浏览器窗口中执行时,完全符合预期,我的服务器记录连接事件,因此我确信服务器和连接代码有效。

任何想法我可能做错了什么?

1 个答案:

答案 0 :(得分:0)

您的代码无法正常工作,因为在服务器端您已发出&#34; text&#34;因此,在客户端,您应该编写socket.on(&#34; text&#34;)

在服务器端,您无法发出&#34; connect&#34;和&#34;错误&#34;事件然后你应该如何在客户端获得这些事件。我不认为普通的socket.js适用于Angular js,你必须添加Angular.js socket.io库。