我正在为 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
。
服务器会自动为您完成其余的工作。
关于javascript - socket.io - 引用错误 : io is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11995406/