Phonegap是否在3.5.0-0.20.10版本中集成了socket.io?

时间:2014-08-02 06:56:50

标签: javascript cordova socket.io requirejs

由于我将PhoneGap更新为3.5.0-0.20.10版本,因此我的项目出现问题。

当我运行PhoneGap服务时,我在cli中看到了;

[phonegap] 200 /socket.io/?EIO=2&transport=polling&t=.......

但我不使用socket.io。使用Chrome开发者工具,我发现在我的项目中是一个socket.io文件夹,其中包含socket.io.js。所以我认为PhoneGap自己导入它。

我的RequireJS现在有一个问题:

  

未捕获的ReferenceError:未定义io

我试图删除RequireJS,然后它可以工作,但我需要RequireJS。所有这些都适用于旧版本3.5.0-0.20.5

1 个答案:

答案 0 :(得分:4)

找到答案...在phonegap的node-modules目录下修改 consoler.js (通常是 / usr / local / lib / node_modules / phonegap / node_modules / connect-phonegap / res /中间件)通过AMD而不是直接加载socket.io:

<!-- <script src="/socket.io/socket.io.js"></script> -->
<script>
(function(window) {
    require(['/socket.io/socket.io.js'],function(io){
        var socket = io('http://' + document.location.host);
        var previousConsole = window.console || {};
        window.console = {
            log:function(msg){
                previousConsole.log && previousConsole.log(msg);
                socket.emit('console','log', msg);
            },
            warn:function(msg){
                previousConsole.warn && previousConsole.warn(msg);
                socket.emit('console','warn', msg);
                },
            error:function(msg){
                previousConsole.error && previousConsole.error(msg);
                socket.emit('console','error', msg);
            }
        }
    });
})(window);
</script>