1. ホーム
  2. javascript

[解決済み] socket.io - ReferenceError: ioが定義されていません。

2022-02-27 04:13:20

質問

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

お分かりにならないかもしれませんが、私はこれがどのように機能するのかまだかなり混乱しており、何もテストすることができません。何度も出てくるエラーは 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 defined は、socket.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 .

解決方法は?

のドキュメントの欠如にひどく困惑している人たちのための答えを見つけました。 socket.io .

をソースとすることはできません。 /socket-lib/socket.io.js ,

のソースが必要です。 http://yourwebsite.com:12345/socket.io/socket.io.js .

あとはサーバーが自動的にやってくれる。