Próbuję od razu dowiedzieć się, co jest nie tak z moim kodem/ustawieniami. Zasadniczo chcę wysłać wiadomość od klienta do serwera . Poniższe działa we wszystkich przeglądarkach z wyjątkiem FF (11) i chrome (18.0.1025.152 m).Socket.io nie wysyła wiadomości do serwera węzłów w przeglądarce Chrome i Firefox
Oto kilka informacji:
- biegnę node.js na Windows 7 Enterprise maszyn 64-bitowych
- używam apache służyć strony z localhost
- słucham na porcie 8080 z socket.io
- To wygląda jak chrom i FF awaryjnej do XHR-wyborczym/jsonp-odpytywanie zamiast używać gniazd
- mogę popychają wiadomości z serwera, ale nie mogę emitować od klienta
kod serwera:
var io = require('C:/Users/shlomis/node_modules/socket.io/lib/socket.io').listen(8080);
io.sockets.on('connection', function (socket) {
socket.on('my event', function (msg) {
console.log("DATA!!!");
});
});
nie mogłem znaleźć sposób, aby wymagać bez pełnej ścieżki
kod klienta:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Hello World!</title>
<meta charset="utf-8">
<script src="http://localhost:8080/socket.io/socket.io.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var socket = io.connect('http://localhost:8080');
$("#button").click(function() {
socket.emit('my event' ,"Hello World!");
})
})
</script>
</head>
<body>
<button type="button" id='button'>Send Message</button>
</body>
</html>
modułów wersjach:
C:\Users\shlomis>npm ls
[email protected] C:\Users\shlomis
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ └── [email protected]
└─┬ [email protected]
├── [email protected]
├── [email protected]
└─┬ [email protected]
├─┬ [email protected]
│ └── [email protected]
├── [email protected]
├─┬ [email protected]
│ ├── [email protected]
│ └── [email protected]
└── [email protected]
log
Węzeł:
C:\Users\shlomis>node C:\dev\wamp\www\AR\js\videoServer.js
info - socket.io started
debug - served static content /socket.io.js
debug - client authorized
info - handshake authorized 17502185141066845391
debug - setting request GET /socket.io/1/websocket/17502185141066845391
debug - set heartbeat interval for client 17502185141066845391
debug - client authorized for
debug - websocket writing 1::
debug - setting request GET /socket.io/1/xhr-polling/17502185141066845391?t=1334041653716
debug - setting poll timeout
debug - discarding transport
debug - cleared heartbeat interval for client 17502185141066845391
prośba chrom WS (101 Protokoły Switching):
prośba chrom XHR:
Aktualizacja: Iv'e dodany
socket.on('connect', function() {
console.log("connected");
});
Nigdy nie uruchamia się na chromie.
Co może być nie tak? proszę pomóż :)
Mam dokładnie ten sam problem ... socket.emit ("cześć") na kliencie działa w safari, ale nie w firefoxie czy chrome ... Może ograniczenie bezpieczeństwa? Lub prawdopodobnie błąd socket.io. –
Czy może to być zasada "tego samego pochodzenia", ponieważ błąd występuje tylko wtedy, gdy XHR jest używany? Spróbuj wprowadzić prosty XHR na localhost: inny port niż obsługiwana strona, sprawdź, czy masz wyjątki bezpieczeństwa. –
BEZ problemów bezpieczeństwa, teraz używam http://faye.jcoglan.com/node.html (faye) dla gniazd w węźle JS i działa dobrze ... wygląda jak błąd socket.io dla mnie. –