昨天晚上花了一小时,体验了下快速极限编程,使用nodejs express + socket.io + jquery 制作一个极简单的聊天服务器,socket.io果然对于简单而强大
zengke:mchat$ date
Mon Nov 28 22:46:02 CST 2011
...
zengke:mchat$ date
Mon Nov 28 23:40:30 CST 2011
服务器端代码 node.js
var express = require('express');
var app = express.createServer();
var io = require('socket.io').listen(app);
app.configure(function () {
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.logger());
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({
secret: "skjghskdjfhbqigohqdioukd",
}));
});
var conns = {};
io.sockets.on('connection', function (socket) {
var cid = socket.id;
for(var ccid in conns) {
var soc = conns[ccid];
soc.emit('join', {cid: socket.id});
}
conns[cid] = socket;
socket.on('disconnect', function () {
delete conns[cid];
for(var cid in conns) {
var soc = conns[cid];
soc.emit('quit', {cid: cid});
}
});
socket.on('say', function (data) {
data.cid = cid;
for(var ccid in conns) {
var soc = conns[ccid];
soc.emit('broadcast', data);
}
});
});
app.get('/', function (req, res) {
res.sendfile(__dirname + '/public/index.html');
});
app.use('/public', express.static(__dirname + '/public'));
app.listen(3000);
console.log('daemon start on http://localhost:3000');
浏览器端javascript
var socket = io.connect("http://localhost");
socket.on('quit', function (data) {
status('Client ' + data.cid + ' quits!');
});
socket.on('join', function (data) {
status('Client ' + data.cid + ' joins!');
});
socket.on('broadcast', function (data) {
$('#thread').append($('<div>').html('client ' + data.cid + ' says:<br/>' + data.w));
});
function say() {
var words = $('#text').val();
if($.trim(words)) {
socket.emit('say', {w: words});
$('#text').val('');
}
}
function status(w) {
$('#status').html(w);
}
function initialize() {
$(document).delegate('textarea', 'keydown', function (evt) {
//console.info(evt.keyCode);
if(evt.keyCode == 13 && evt.ctrlKey) {
$('#send').focus().click();
}
});
}
页面HTML代码
<html>
<head>
<script src="/public/jquery-1.7.min.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script src="/public/mchat.js"></script>
<style type="text/css">
#content { width: 600px; margin: 0 auto; }
textarea { width: 400px; height: 40px;}
</style>
<script>
$(document).ready(function() {
initialize();
});
</script>
</head>
<body>
<div id="content">
<h1>Micro Chat</h1>
<div id="status"></div>
<div id="thread">
</div>
<div>
<textarea id="text" name="text"></textarea>
</div>
<div>
<button id="send" onclick="say();">Send</button>
</div>
</div>
</body>
</html>

- 大小: 19.4 KB
分享到:
相关推荐
在本文中,我们将深入探讨如何使用Node.js和Socket.IO创建一个简单的聊天室。这是一个非常实用的项目,适合初学者入门,同时也是对这两种技术的绝佳实践。 Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它...
Socket.IO Redis 发射器 该@socket.io/redis-emitter包允许您轻松地从另一个 Node.js 进程(服务器端)与一组 Socket.IO 服务器进行通信。该发射器还可用于其他编程语言Java...
Socket.IO Redis发射器 @socket.io/redis-emitter软件包使您可以轻松地与另一个Node.js进程(服务器端)中的一组Socket.IO服务器进行通信。 发射器还提供其他编程语言版本: Java: : Python: : ...
在本文中,我们将深入探讨如何使用JavaScript、socket.io、WebRTC、Node.js和Express搭建一个简易版的远程视频聊天应用。这些技术都是现代Web开发中的关键组件,它们各自扮演着不同的角色,共同构建出实时、低延迟的...
标题中的“简单的乒乓球游戏#socket.io #node.js_JavaScript_代码_下载”表明这是一个基于JavaScript、Node.js和Socket.IO的简单乒乓球游戏项目。在这个项目中,开发者利用这些技术创建了一个实时的、多人在线对战的...
3. **创建Socket.IO客户端**:在客户端,我们需要使用Socket.IO的JavaScript库来创建一个Socket实例,连接到服务器的WebSocket端点。 4. **事件监听与处理**:在服务器端,我们可以通过监听各种Socket.IO事件(如'...
WebSocket是一种用于在客户端和服务器之间进行双向通信的网络协议,而Socket.io则是一种基于WebSocket的实时通信库,提供了更多的功能和便利性。以下是关于这些资源的描述: WebSocket和Socket.io实现: 1. **...
在IT行业中,网络通信是至关重要的部分,而Socket.IO是一个流行的实时应用框架,它允许双向、实时通信在客户端和服务器之间。在这个场景中,我们关注的是一个Go语言实现的Socket.IO-emitter库,用于在Go服务端模拟...
Socket.IO 是一个实时应用框架,它为开发人员提供了一种简单的方式来实现实时、双向通信。在游戏开发中,实时性至关重要,无论是多人在线对战游戏还是协作游戏,都需要高效的数据传输来确保游戏体验。Unity 是一款...
8. **事件驱动编程**: Node.js和Socket.IO都基于事件驱动架构,开发者通过监听和触发事件来处理应用程序的不同阶段。例如,服务器可能监听`connection`事件以处理新客户端的连接,而客户端可能监听`message`事件来...
Socket.io-p2p 是一个基于 WebRTC 的库,它允许开发者利用浏览器的 Peer-to-Peer (P2P) 技术直接进行数据通信,并结合了流行的 Socket.IO API,以实现高效、实时的通信解决方案。在现代 web 开发中,尤其是在构建...
Socket.IO 是一个实时应用程序框架,它为开发人员提供了一种简单的方式来实现在Web上进行双向通信,即服务器和客户端之间的实时、低延迟的数据传输。它通过多种协议在各种环境中工作,包括WebSocket,确保了在不支持...
用Rust编程语言编写的socket.io客户端的实现。 此实现当前支持socket.io协议的修订版5,因此支持engine.io协议的修订版4。 如果与此客户端有任何连接问题,请确保服务器至少使用engine.io协议的修订版4。 用法示例 ...
socket.io是一个跨平台、跨浏览器的库,它为开发者提供了一个统一的API,用于处理多种实时通信协议,包括WebSocket、Flash Socket、AJAX长轮询、AJAX多部分流、Forever IFrame和JSONP轮询。这些协议的选择和切换由...
标题中的“聊天室、websocket、socket.io、毕业设计”揭示了这个压缩包文件涉及的核心技术领域,这主要是关于网络通信和实时交互应用的开发。在毕业设计中,这些技术常被用于构建在线聊天应用程序,让学生能够展示...
Socket.io是一个基于Node.js的实时通信库,它允许服务器和客户端之间进行双向通信,是构建实时应用的优选解决方案。 本项目基于Node.js和Socket.io框架,实现了一个多人在线贪吃蛇游戏。游戏的源码结构复杂,包含了...
6. **事件驱动编程**:Node.js和Socket.IO都基于事件驱动模型,当接收到新消息时,服务器和客户端都会触发相应的事件,从而更新用户界面。 7. **Express.js**:虽然不是直接相关的,但通常Node.js应用会结合Express...
SocketioDemo(Kotlin)是一个基于Kotlin编程语言的示例项目,主要展示了如何使用Socket.IO库来实现客户端的长连接通信。Socket.IO是一种实时、双向通信框架,它在Web开发中广泛用于实现实时推送通知、聊天应用等功能...