简体   繁体   English

Nodejs和websockets

[英]Nodejs & websockets

I'm trying to push data from my browser (Chrome) to a nodejs server and I'm having terrible trouble. 我正在尝试将数据从我的浏览器(Chrome)推送到nodejs服务器,我遇到了可怕的麻烦。

Basically, I've got this code that appears in the browser: 基本上,我有这个代码出现在浏览器中:

<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>

The only alert that's appearing is the 'close' alert. 出现的唯一警报是“关闭”警报。

Here is my server code: 这是我的服务器代码:

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');
});

You can see I'm trying to log the connections to the console, but nothing ever shows up. 您可以看到我正在尝试将连接记录到控制台,但没有任何显示。 I've been googling and trying to work through the Socket.IO examples at http://github.com/LearnBoost/Socket.IO-node and nothing seems to be working for me... 我一直在谷歌搜索并尝试通过http://github.com/LearnBoost/Socket.IO-node上的Socket.IO示例,似乎没有什么对我有用......

Any pointers is much appreciated. 任何指针都非常感谢。

Edit: Hi, 编辑:嗨,

I've got the following server code now: 我现在有以下服务器代码:

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');
});

And the following client code: 以下客户端代码:

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

When I load the client code at localhost:8124, I'd expect some sort of 'clientConnect' events to be fired. 当我在localhost:8124加载客户端代码时,我希望触发某种“clientConnect”事件。 I'm also sending data on the socket object and there's nothing appearing on the server... Totally stumped. 我也在socket对象上发送数据,服务器上没有任何内容......完全难倒。 Looking at using node-websocket-server now ( http://github.com/miksago/node-websocket-server ). 现在看一下使用node-websocket-server( http://github.com/miksago/node-websocket-server )。

Solution: git clone git://github.com/LearnBoost/Socket.IO.git --recursive 解决方案:git clone git://github.com/LearnBoost/Socket.IO.git --recursive

Use --recursive flag. 使用--recursive标志。 Doh! 卫生署!

这是一个Chrome问题: Node.js,WebSocket位置问题?

this code works for me: 这段代码适合我:

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

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

and then on client: 然后在客户端:

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

Maybe the explicit port parameter will help in your case? 也许显式端口参数对您的情况有帮助?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM