美文网首页
node.js搭建基础聊天室,part1

node.js搭建基础聊天室,part1

作者: 龍太 | 来源:发表于2017-02-28 21:21 被阅读0次

    我的毕设打算做一个实时聊天这样一个系统,找了下相关的教程和思路,接下来会尝试使用express+socket.io搭建一个简单的聊天室,这里暂时不使用数据库,使用cookie来存储相关数据。

    参考教程:https://github.com/nswbmw/N-chat
    有关api参考官方文档,
    关于res.cookie参考本篇博文:https://segmentfault.com/a/1190000004139342?_ea=504710

    今天做到第一部分,socket.io基础和登陆功能实现

    IDE:vscode
    express版本:3.3.1
    socket.io版本:0.9.7

    part1 一个基础的socket.io实例演示

     //#client
    
    var socket = io.connect('http:/localhost');
    
    socket.on('news',function  (data) {
        console.log(data);
        socket.emit('my other event',{my : 'data'});
    })
    
    //#server
    
    var app = require('express')();
    var server = require('http').createServer(app);
    var io = require('socket.io').listen(server);
    
    
    server.listen(80);
    
    app.get('/',function  (req,res) {
        res.sendfile(__dirname+'/index.html');
    });
    
    io.socket.on('connection',function  (socket) {
        socket.emit('news',{hello:'world'});
        socket.on('my other event',function  (data) {
            console.log(data);
        })
    })
    

    socket.io的核心方法其实就是emit和on,然后通过事件驱动这样的方式来完成对流对象的读写等操作,具体的api可查阅相关文档。

    part2 登陆功能实现,这里插一张流程图,看的会比较清晰

    登陆功能

    ok,接下来具体代码

    'use strict';
    
    var express = require("express");
    var http = require('http');
    var path = require('path');
    
    var app = express();
    
    app.set('port',process.env.PORT||3000);
    app.set('views',__dirname + "/views");
    app.use(express.bodyParser());
    app.use(express.cookieParser());
    
    var users = {};//存储在线用户列表的对象
    
    app.get('/',function(req,res){
        if(req.cookies.user === null){
            res.redirect('/signin');
        }else{
            res.sendfile('views/index.html');
        }
    });
    
    app.get('/signin',function(req,res){
            res.sendfile('views/signin.html');
    });
    
    app.post('/signin',function(req,res){
            if (users[req.body.name]) {
                res.redirect('/signin');
            } else {
                res.cookie("user",req.body.name,{maxAge: 1000*60*60*24*30});
            res.redirect('/');
        }
    })
    

    以上,待续

    相关文章

      网友评论

          本文标题:node.js搭建基础聊天室,part1

          本文链接:https://www.haomeiwen.com/subject/uhdfgttx.html