昨天晚上花了一小时,体验了下快速极限编程,使用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运行环境,它...
在这个项目中,我们将探讨如何使用Node.js和Socket.IO来构建一个网页版的在线聊天室。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它让开发者可以使用JavaScript进行服务器端编程。Socket.IO则是一个库,...
在本文中,我们将深入探讨如何使用JavaScript、socket.io、WebRTC、Node.js和Express搭建一个简易版的远程视频聊天应用。这些技术都是现代Web开发中的关键组件,它们各自扮演着不同的角色,共同构建出实时、低延迟的...
WebSocket是一种用于在客户端和服务器之间进行双向通信的网络协议,而Socket.io则是一种基于WebSocket的实时通信库,提供了更多的功能和便利性。以下是关于这些资源的描述: WebSocket和Socket.io实现: 1. **...
Socket.IO 是一个实时应用框架,它为开发人员提供了一种简单的方式来实现实时、双向通信。在游戏开发中,实时性至关重要,无论是多人在线对战游戏还是协作游戏,都需要高效的数据传输来确保游戏体验。Unity 是一款...
Socket.IO 是一个实时应用框架,它为开发人员提供了一种简单的方式来实现实时、双向通信。这个框架在服务器端和客户端都有实现,使得通过WebSockets或其他备用协议进行实时通信变得容易。在Arduino和ESP8266平台上,...
在"Node.js-node.js利用socket.io实现多人在线匹配联机五子棋"这个项目中,我们将会讨论如何利用Node.js和Socket.IO来创建一个实时的多人在线五子棋游戏。五子棋是一种简单但策略丰富的两人对弈游戏,通过网络实现...
聊天室、websocket、socket.io、毕业设计。 基于聊天室功能的毕业设计项目可以采用WebSocket或Socket.IO技术来实现实时通信。这两种技术都允许客户端和服务器之间进行全双工通信,非常适合实时聊天室应用。以下是一...
在这个项目中,我们探讨的是如何使用Node.js、Express、Peer.js和Socket.io构建一个实时的视频聊天应用程序。这个技术组合提供了高效、灵活且实时的网络通信能力,是现代Web开发中的常见选择。以下是对这些技术及其...
socket.io是一个跨平台、跨浏览器的库,它为开发者提供了一个统一的API,用于处理多种实时通信协议,包括WebSocket、Flash Socket、AJAX长轮询、AJAX多部分流、Forever IFrame和JSONP轮询。这些协议的选择和切换由...
WebSocket和Socket.IO是实现这一目标的两种常见技术。 WebSocket是一种在客户端和服务器之间建立持久连接的协议,允许双向通信。它克服了HTTP协议的限制,提供了低延迟和高效率的数据传输,特别适合需要实时交互的...
C#串口编程之使用System.IO.Ports读取COM口数据 C#串口编程是计算机编程中的一种重要技术,用于控制和管理串行通信端口。串行通信是一种常用的数据传输方式,广泛应用于工业自动化、机器人控制、医疗器械等领域。...
Socket.io是一个跨平台的库,它在WebSocket基础上添加了额外的错误检测和恢复机制,以确保在网络不稳定时也能保持通信。Socket.io库在Android中提供了客户端库,可以方便地集成到应用中,实现与Node.js服务器的实时...
Socket.IO 是一种实时应用程序框架,它为Web开发者提供了一种简单、高效的通信协议,使得客户端与服务器之间的双向通信变得容易。在本项目中,"易语言-Socket IO协议" 提供了一个实现,但只完成了Text部分,Binary...
3. **事件驱动编程**:在Socket.IO中,通信基于事件模型,客户端和服务器都可以触发和监听事件。例如,服务器可以广播一个"news"事件,客户端通过监听这个事件来获取更新。 4. **组件通信**:在Vue.js中,你可以...
Socket.IO 是一个实时应用框架,它为Web开发者提供了一种简单、高效的实时通信解决方案。它在Node.js环境中运行,结合了WebSocket与其他多种浏览器兼容的技术,确保数据能够在客户端和服务器之间实时双向传输。在这...
"JavaScript" 标签表明这个话题主要涉及JavaScript编程语言,因为Socket.io是基于Node.js(JavaScript的服务器端运行环境)的,并且ApiHero也使用JavaScript编写。 **文件名称列表分析:** "apihero-module-...
`Socket.IO` 是一个流行的库,它提供了强大的实时双向通信功能,适用于Web应用。本示例是一个基于Maven构建的简单`Socket.IO`连接Demo,让我们深入探讨这个主题。 首先,`Maven`是一个项目管理工具,广泛用于Java...
在Haskell中实现Engine.IO和Socket.IO(1.0)协议的服务器端,可以为开发者提供一个高度类型安全和高效的环境来处理这些实时交互。 Engine.IO是Socket.IO的基础,它负责建立和维护WebSocket或轮询等低级传输机制,...