NodeJS+Expres+Socket.io实现HTTP通知websocket客户端

无聊的时候乱想的,在游戏客户端中调用http接口,及时的通知web端消息。公司的一个需求,虽然因为浏览器的兼容性,放弃了这个方案。下面是个乱写的demo

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var events = require('events');
var emitter = new events.EventEmitter();
var id = null;

app.get('/', function(req, res){
    res.send('<h1>Welcome Realtime Server</h1>');
});

//接受
app.get("/receiveMessage", function(req, res) {
    emitter.emit("webreceive", {id:10});
    res.send("i can play");
});

io.on('connection', function(socket){
    if(id == null) {
        id = socket.id;
    };
    //只发给当前客户端
    socket.emit("hello", "socket:" + socket.id);
    //发送给所有连接的客户端
    io.emit("hello", "io:" + socket.id);

    socket.on("disconnect", function() {
        console.log("a user go out");
    });

    socket.on("message", function(obj) {
        io.emit("message", obj);
    });

    emitter.on("webreceive", function(obj) {
        if(socket.id == id) {
            socket.emit("message", obj);
            console.log("i'm webreceive");
        }
    })
});

http.listen(3000, function(){
    console.log('listening on *:3000');
});

receiveMessage负责接收通知,然后通知所有的客户端。里面的id是乱写的,可以定义一个对应关系。到这里,作业就完成了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值