nodejs socket.io初探

1、安装socket.io

npm install socket.io

2、创建服务端代码server.js


var app = require('http').createServer(handler), 

    io = require('socket.io').listen(app), 

    fs = require('fs')


app.listen(8080);

io.set('log level', 1);//将socket.io中的debug信息关闭


function handler (req, res) {

  fs.readFile(__dirname + '/index.html',function (err, data) {  

    if (err) {

      res.writeHead(500);

      return res.end('Error loading index.html');

    }    

    res.writeHead(200, {'Content-Type': 'text/html'});    

    res.end(data);

  });

}


io.sockets.on('connection', function (socket) {

    socket.emit('news', { hello: 'world' });

    socket.on('my other event', function (data) {

      console.log(data);

    });

});


3、创建客户端代码 index.html


<!DOCTYPE html>

<html lang="en">

<head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>Ssocket</title>

    <script type="text/javascript" src="http://localhost:8080/socket.io/socket.io.js"></script>     

</head>


<body>

    <script type="text/javascript">

      var socket = io.connect('http://localhost:8080');     

      socket.on('news', function (data) {    

        alert(data.hello);

        socket.emit('my other event', { my: 'data' });

      });

    </script>

    

</body>

</html>


4、执行结果

启动服务端:

node  server.js

在浏览器输入 http://localhost:8080/index.html

浏览器打印出: world

命令行打印出:{ my: 'data' }

 

5、更多资料参见官方网站 http://socket.io/#how-to-use

6、服务端向指定客户端发送消息

思路是客户端与服务端建立连接的时候,服务端保存客户端的信息,做一个socketMap, 在socketMap中取出需要发送消息的客户端,向该客户端发送消息

做一个模拟的简单例子,这里用的是数组:


var sockets = [];

var i = 1;

io.sockets.on('connection', function (socket) {

    sockets[i] = socket;

    i++;

    socket = sockets[1];  //这里指定向第一个客户发送消息

    console.log(i);

    

    socket.emit('news', { hello: 'world' });

    socket.on('my other event', function (data) {

      console.log(data);

    });

});


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值