node.js - 使用 Require.js 在离线应用程序中引用 Node 服务器的 Socket.io

标签 node.js socket.io requirejs

我正在尝试使用由 Node 服务器托管的 Socket.io。我正在使用 Require.js 来管理依赖项。我的网络应用程序可以离线使用。

当Web应用程序离线并且无法联系 Node 服务器时,require.js会抛出错误,因为它找不到socket.io依赖项。

GET http://mikemac.local:8000/socket.io/socket.io.js  require.js:33
Uncaught Error: Script error
http://requirejs.org/docs/errors.html#scripterror

在这种情况下,我没有在系统的大部分部分使用node/io,只是“额外”实时通知。所以应用程序应该在没有它的情况下运行。

我该如何处理这个问题?我想要一种方法来检测它是否无法找到,然后禁用 socket.io 功能,直到尝试连接/刷新。

最佳答案

在您的配置中设置回退到其他模块,并在回退中指示它处于离线状态:

requirejs.config({
    enforceDefine: true,
    paths: {
        socketio: [
            'http://mikemac.local:8000/socket.io/socket.io',
            //If the CDN location fails, load from this location
            'lib/socketoffline'
        ]
    }
});

//socketoffline
define({ offline: true});

//Later
require(['socketio'], function (socketio) {
    if (socketio.offline){
        // your library did not load:
    } else {
        // socketio loaded
    }
});

关于node.js - 使用 Require.js 在离线应用程序中引用 Node 服务器的 Socket.io,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16739246/

相关文章:

javascript - Nodejs - socketio - 更新所有浏览器窗口中的信息

node.js - 在 feathersjs 中将 socket.io 逻辑与 app.js 分开

jQuery .serializeArray() 返回空数组

javascript - 将变量从服务器 (Node.JS) 传递到客户端

angularjs - 仅渲染 Angular 应用程序的一个模块/状态

javascript - 使用名称 "in"的 Socket.io 使 Webstorm IDE 引发错误

javascript - 如何使用 ES6 符号填充

javascript - 由 requirejs 加载的 javascript 文件中的原型(prototype)函数

javascript - Node.js 中的管道问题

coding-style - 如何正确处理 Node.JS 中的延迟操作?