socket.io session 应用

本文介绍了如何结合socket.io和session技术在服务端和客户端之间建立实时通信。服务端通过socket.io监听连接,设置session,确保每个连接都有唯一标识。客户端则通过socket.io库与服务器交互,实现数据的实时传输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

服务端:

var http = require("http");
var util = require("util");
var fs = require("fs");
var path = require("path");

var express = require("express");
var io = require("socket.io");
var SessionSockets = require('session.socket.io');

var secret = "my secret",key = "connect.id";

var cookieParser = express.cookieParser(secret);
var sessionStore = new express.session.MemoryStore({
	reapInterval:20*60*1000	
});

var app = express();
app.use(cookieParser);
app.use(express.bodyParser());
app.use(express.session({secret: secret,store : sessionStore, key:key }));
app.use(app.router);
app.use(express.methodOverride());
app.get("/:uid",function(req,res){
	var session = req.session;
	var uid = req.param("uid");
	console.log("uid:",uid);
	session.uid = uid;
	process.nextTick(function(){
		session.save();
	});
	fs.readFile(path.join(__dirname,"socket.html"),"utf8",function(err,data){
		if (err) {
			res.end(err);
		}else{
			res.end(data);
		}
	});
});
var server = http.createServer(app);
var socket = io.listen(server);
var sessionSockets = new SessionSockets(socket, sessionStore, cookieParser,key);
sessionSockets.on("connection",function(err,client,session){
	console.log("current session : %s",util.inspect(session));
});

server.listen(3000);


客户端:

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>socket.io</title>
	<script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>
	<script src="https://cdn.socket.io/socket.io-1.0.6.js" type="text/javascript"></script>	
</head>
<body>
	<ul id="message"></ul>
	
	<script type="text/javascript">
		var room , socket;
		var message = $("#message");
		socket = new io.connect("http://localhost:3000/");
		socket.on("connect",function(){
			var s = this;
			message.append("<li>socket is connected.</li>");
		});
		socket.connect();

	</script>

	<img src="http://3.web.qstatic.com/webqqpic/style/wallpaper/blue_glow.jpg" style="position:absolute; top:0;left:0; height:100%;width:100%; z-index:-10;" />
</body>
</html>


输出:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值