Nodejs 即时通信socket.io

安装 npm install socket.io --save

// 导入socket.io模块
var io = require('socket.io')

一、单独使用:

// 创建socket.io服务器
var server = io()
// 监听connection事件
server.on('connection',function(socket){
    console.log('connect')
})
// 在80端口监听
server.listen(80);
 
二、和http Server搭配使用
var http = require('http')
// 创建HTTP Server
var server = http.createServer();
// 创建socket.io Server 使用HTTP Server
var ioServer = io(server)
// 80 端口监听
server.listen(80);
// 监听connction事件
ioServer.on('connection',function(socket){
    console.log('有新连接...');
})

三、和express配合使用
服务器端:
var express = require('express')
var http = require('http')
// 创建express Server
var app = express();
app.use(express.static(__dirname))
// 使用express Server创建普通http Server 
var server = http.createServer(app)
// 使用http Server创建socket Server(一定要使用http Server,不能直接使用app)
var ioServer = io(server)
// 监听connection事件,当有客户端连接会触发此事件
ioServer.on('connection',function(socket){
    console.log('有客户端连接...')
    // 给客户端发送数据
    socket.send('welcome to server');
    // message事件,监听客户端发来的数据
    socket.on('message',function(data){
        console.log('receive messsage form client : '+data);
        socket.send('confirm:'+data)
    })
})
// 一定要使用httpServer监听端口
server.listen(80);	
浏览器端:
<!-- 引入客户端js,此js为服务器运行时动态生成的js -->
<script src="/socket.io/socket.io.js" ></script>
<script type="text/javascript">
    // 通过io.connect(http://url:port)可以连接到指定地址,返回socket对象
    var socket = io.connect("http://127.0.0.1:80");
    // 监听连接事件,当连接上会回调此方法
    socket.on('connect',function(){
        // 给服务器发送数据
        socket.send('hello i\'m a new client');
        // message事件监听接收的数据
        socket.on('message',function(msg){
            console.log('from server :'+msg)
        })
    })
    socket.on('disconnect',function(){
        console.log('disconnect from server...')
    })
</script>
这样浏览器和socket.io服务器就可以相互实时通信了
socket.io 服务器还有一些其他方法
socket.join(StringName,function) // 进入一个房间
socket.leave(StringName,function) // 离开一个房间
socket.broadcast.emit()  // 广播,不包括自己
socket.broadcast.to(StringName).emit() // 对某个房间人说话,布包括自己
io.sockets.in(StringName).emit() // 对此房间所有人说话,包括服务器自己
io.sockets.emit() // 对所有房间所有人说话
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值