socket.io - ReferenceError:未定义io

Nes*_*ess 32 javascript android referenceerror ios socket.io

我正在为Android 2.3.5编写一个应用程序(它也将与iOS兼容).我希望将数据从应用程序的HTML/Javascript传输到服务器上的Python程序(使用Twisted引擎来检索数据).

我尝试了很多东西,看了各种论坛,答案,教程和网页 - 其中大部分都在这里 - 并且找不到答案.这是我在index.html文件中的相关Javascript:

<script src="socket-lib/socket.io.js"></script>
<script type="text/javascript" charset="utf-8">
function sendData() {
    try {
        var socket = io.connect('http://mywebsite.com:12345');
        socket.on('connect', function(data) {
            socket.send('Hello.');
            socket.on('message', function (msg) {
                socket.send('This is where I send data?');
            });
        });
    }
    catch(err) {
        alert('ERROR: socket.io encountered a problem:\n\n' + err);
    }
} // end of sendData
Run Code Online (Sandbox Code Playgroud)

如果你不能说,我仍然很困惑这是如何工作的; 我甚至无法测试任何东西.不断出现的错误是ReferenceError: io is not defined.一些网站使用的东西var io = require('socket.io');.但是它会导致同样的错误:ReferenceError: require is not defined.

我把socket-lib文件夹放在assets/www中,其中任何其他Javascript源都应该去.这也是index.html文件的位置.许多网站使用<script src="/socket.io/socket.io.js"></script>,但这对我没有意义.许多网站也暗示使用node.js,但我从未在任何地方看到它.

我怎样才能做到这一点?

回复编辑:

我在Chrome中试过它,它给了我一个Uncaught ReferenceError: require is not definedsocket.io.js文件.所以我决定在它之前使用require.js.然后它给出了错误Uncaught Error: Module name "socket.io-client" has not been loaded yet for context.因为我没有使用它,所以我不在意.但是,当我尝试连接时,它会给出相同的io is not defined错误.当我将其定义为时var io = require('socket.io'),错误是Error: Module name "socket.io" has not been loaded yet for context: _ http://requirejs.org/docs/errors.html#notloaded.我查看了网站,它根本没有帮助我.当我尝试将"require"作为函数参数时,会发生另一个错误:TypeError: undefined is not a function.

Nes*_*ess 55

我找到了答案,任何人都会因为可怕的缺乏文档而感到非常困惑socket.io.

你不能采购/socket-lib/socket.io.js,

你必须来源http://yourwebsite.com:12345/socket.io/socket.io.js.

服务器会自动为您完成剩下的工作.

  • 而这里提到的端口(12345)只不过是节点运行socket.io的端口 (2认同)

sha*_*sol 6

我通过更改index.html从bower导入socket io客户端来解决它,首先我安装了bower组件:

 bower install socket.io-client
Run Code Online (Sandbox Code Playgroud)

然后我将index.html中的引用更改为:

 <script src="bower_components/socket.io-client/socket.io.js"></script>
Run Code Online (Sandbox Code Playgroud)

或者可以在 - lib/socket.io-client/dist/socket.io.js找到文件