0

在使用 android 浏览器访问文件时,我可以使用 NowJS 聊天,但是当在 phonegap 中执行相同的代码时,消息不会被接收或发送。

有没有人能够成功地使用 nowJS 或带有 phonegap/cordova 的套接字?

可在 Web 浏览器、FF、Chrome 和 android 本机浏览器上运行的代码,但不能在 phonegap 上运行

$(document).ready(function(){
        now.receiveMessage = function(id, name, message, timestamp){
            $("#messages").append("<br>" + id + ' ' + name + ": " + message + ' ' + timestamp);
        };

        // Send message to people in the same group
        $("#send-button").click(function(){
            now.distributeMessage(room, $("#text-input").val());
            $("#text-input").val("");
        });

        now.name = 'Guest '+Math.floor(Math.random() * 1000 % 5 + 2);

        // on establishing 'now' connection, set server room and allow message sending
        now.ready(function(){
        room = location.hash.replace('#', '');

            if (!room) {
            alert("Please specify a room");
            throw "";
            }

            now.changeRoom(room);

            // Connection established and room set; allow user to start sending messages
            $("#send-button").removeAttr('disabled');
        });
    });
4

1 回答 1

1

可能是在 PhoneGap 中运行时 Now.js 中的回退机制在 WebView 中不起作用。如果他们使用 Flash Fallback,那么您需要启用插件。看起来这将很快默认启用: https ://github.com/apache/incubator-cordova-android/pull/18

我最近在 Android 启动项目上为 PhoneGap 创建了一个 Pusher,我没有启用插件并依赖 Flash,而是将一个在 Java 中运行的 WebSocket 对象暴露给 WebView JavaScript 运行时。我真的很喜欢这种方法,因为它完全消除了 Flash 问题。也许这是你可以在你的安卓应用程序中做的事情?

您可以在此处看到包含将 WebSocket 对象公开给 WebView JS 运行时所需的所有代码的启动项目(只需将 pusher.min.js 包含替换为 now.js ):

以及通过 README 获得有关 PhoneGap WebSocket Android 支持的信息: https ://github.com/pusher/pusher-phonegap-android#native-websocket-support

于 2012-07-11T14:36:41.830 回答