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

我的毕设打算做一个实时聊天这样一个系统,找了下相关的教程和思路,接下来会尝试使用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 登陆功能实现,这里插一张流程图,看的会比较清晰

node.js搭建基础聊天室,part1_第1张图片
登陆功能

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)