Piszę aplikację dla systemu Android 2.3.5 (która będzie również kompatybilna z iOS). Chciałbym przenieść dane z kodu HTML/JavaScript aplikacji do programu Python na serwerze (który używa mechanizmu Twisted do pobierania danych).socket.io - ReferenceError: io nie jest zdefiniowany
Próbowałem wielu rzeczy i patrzyłem na różne fora, odpowiedzi, tutoriale i strony internetowe - w tym większość z nich tutaj - i nie mogę znaleźć odpowiedzi. Oto odnośny JavaScript mam w pliku index.html:
<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
Jeśli nie można powiedzieć, że jestem jeszcze całkiem zdezorientowany, jak to działa; Nie mogę nawet niczego przetestować. Błąd, który ciągle nadchodzi, to ReferenceError: io is not defined
. Niektóre witryny używały czegoś takiego jak var io = require('socket.io');
. Ale wtedy powoduje to ten sam błąd: ReferenceError: require is not defined
.
Umieszczam folder socket-lib w zasobach/www, gdzie powinno być inne źródło JavaScript. Tutaj także znajduje się plik index.html. Wiele witryn używa <script src="/socket.io/socket.io.js"></script>
, ale to nie ma dla mnie żadnego sensu. Wiele witryn oznacza również użycie pliku node.js, ale nigdy go nie widzę.
Jak mogę to ułatwić?
Odpowiedz redaguje:
próbowałem go w Chrome, a to daje mi Uncaught ReferenceError: require is not defined
dla pliku socket.io.js. Dlatego zdecydowałem się na źródło w require.js tuż przed nim. Następnie daje błąd Uncaught Error: Module name "socket.io-client" has not been loaded yet for context
. Ponieważ nie używam tego, nie obchodzi mnie to. Kiedy próbuję połączenia, daje to ten sam błąd io is not defined
. Kiedy zdefiniuję go jako var io = require('socket.io')
, błąd to Error: Module name "socket.io" has not been loaded yet for context: _ http://requirejs.org/docs/errors.html#notloaded
. Spojrzałem na stronę internetową i wcale mi to nie pomaga. Kiedy próbuję umieścić "require" jako argument funkcji, pojawia się kolejny błąd: TypeError: undefined is not a function
.
Znalazłem odpowiedź, dla każdego, kto dostaje ogromnie mylone przez strasznym brakiem dokumentacji socket.io. Nie można uzyskać źródła "/socket-lib/socket.io.js"; musisz pobrać "http://yourwebsite.com:12345/socket.io/socket.io.js". Serwer automagicznie wykonuje resztę za Ciebie. – Ness
jesteś moją nową ulubioną osobą, proszę pana! Ich próbki na socket.io są okropnie mylące. – Xealgo
Zgodnie z dokumentacją, ponieważ v1.0 można zażądać biblioteki klienta z ich CDN: http: // socket.io/blog/introducing-socket-io-1-0/# cdn-delivery – maxwell2022