Nodejs & websockets - PullRequest
       6

Nodejs & websockets

10 голосов
/ 02 августа 2010

Я пытаюсь отправить данные из моего браузера (Chrome) на сервер nodejs, и у меня ужасные проблемы.

По сути, у меня есть этот код, который появляется в браузере:

<script src="./Socket.IO/socket.io.js"></script>
<script>
        io.setPath('./Socket.IO/');

        var socket=new io.Socket('xxx.xxx.xxx.xxx');

        socket.on('connect',function(){
                alert('connect');       
        });
        socket.on('message',function(msg){
                alert('message'+msg);
        });
        socket.on('close',function(){
                alert('close');
        });
        socket.on('disconnect',function(){
                alert('disconnect');
        });
        socket.connect();

</script>

Единственное предупреждение, которое появляется, это предупреждение о закрытии.

Вот мой код сервера:

var http=require('http');
var io=require('./Socket.IO-node');

var server=http.createServer(function(req, res){
    // your normal server code
    res.writeHeader(200, {'Content-Type': 'text/html'});
    res.writeBody('<h1>Hello world</h1>');
    res.finish();
});

var socket=io.listen(server,{transports:websocket,port:8080});

socket.on('connection',function(client){
        console.log('connection');
});

Вы можете видеть, что я пытаюсь зарегистрировать соединения с консолью, но ничего не появляется. Я гуглял и пытался работать с примерами Socket.IO на http://github.com/LearnBoost/Socket.IO-node, и мне кажется, что ничего не работает ...

Любые указатели очень ценятся.

Edit: Привет,

Теперь у меня есть следующий код сервера:

var http=require('http');
var io=require('./Socket.IO-node');

var server=http.createServer(function(req, res){
        //your normal server code
        res.writeHead(200, {'Content-Type': 'text/html'});
        res.write('Hello world');
        res.end();
});

server.listen(8124);
server=io.listen(server);
server.on('connection', function(client){
        console.log('EOH connected');
        sys.log('EOH connected');
});
server.on('clientConnect',function(client){
        console.log('EOH connected');
        sys.log('EOH connected');
});
server.on('clientDisconnect',function(client){
        console.log('EOH disconnected');
        sys.log('EOH disconnected');
});

И следующий код клиента:

<script>
window.onload=function(){
io.setPath('./Socket.IO/');
socket = new io.Socket('localhost', {'port': 8124});
socket.connect();
socket.send('xxx');
}
</script>

Когда я загружаю код клиента в localhost: 8124, я ожидаю, что будет запущено какое-то событие clientConnect. Я также отправляю данные на объекте сокета, и на сервере ничего не появляется ... Полностью озадачен. Теперь рассмотрим использование node-websocket-server (http://github.com/miksago/node-websocket-server).

Решение: git clone git: //github.com/LearnBoost/Socket.IO.git --recursive

Используйте --recursive flag. Doh!

Ответы [ 2 ]

5 голосов
/ 10 августа 2010
0 голосов
/ 02 августа 2010

у меня этот код работает:

var server = http.createServer(...);    

server.listen(8124);
server = io.listen(server);
server.on('connection', function(client){
    sys.log('client connected');
});

и затем на клиенте:

io.setPath('/media/js/Socket.IO/');
socket = new io.Socket('localhost', {'port': 8124});
socket.connect();

Может быть, явный параметр порта поможет в вашем случае?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...