昨天晚上花了一小时,体验了下快速极限编程,使用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
分享到:
相关推荐
网络编程 - Socket.ppt 网络编程 - Socket.ppt 网络编程 - Socket.ppt 网络编程 - Socket.ppt 网络编程 - Socket.ppt 网络编程 - Socket.ppt 网络编程 - Socket.ppt 网络编程 - Socket.ppt 网络编程 - Socket.ppt ...
Socket.IO Redis发射器 @socket.io/redis-emitter软件包使您可以轻松地与另一个Node.js进程(服务器端)中的一组Socket.IO服务器进行通信。 发射器还提供其他编程语言版本: Java: : Python: : ...
用Rust编程语言编写的socket.io客户端的实现。 此实现当前支持socket.io协议的修订版5,因此支持engine.io协议的修订版4。 如果与此客户端有任何连接问题,请确保服务器至少使用engine.io协议的修订版4。 用法示例 ...
:construction: Kotlin插座-Redis适配器该库使您可以从kotlin后端通过socket.io轻松发布通知。 目前正在建设中,尚未... 该设置包含一个Redis实例,一个Java发布者,三个socket.io-servers和三个使用中的socket.io-cli
要理解此代码,有必要了解Web编程的基础知识,因为我将仅演示该出色的工具socket.io的一些示例。 来吧,首先在您选择的目录中初始化一个node项目,并使用您的喜好名称将其命名为first-socket.io 。 mkdir first-...
异步Socket,HTTP(客户端 服务器),WebSocket,和socket.io库。基于NIO而不是线程。
socket.io能为程序员提供客户端和服务端一致的编程体验,socket.io支持任何的浏览器,任何的Mobile设备。下面通过本篇文章给大家讲解HTML5之WebSocket入门3 -通信模型socket.io,需要的朋友可以参考下
使用到JS+socket.io+WebRTC+nodejs+express构建远程实时视频聊天功能,实现浏览器对浏览器之间通过socket建立连接,再通过WebRTC进行流式传输
使用System.IO.Ports读取COM口数据 关于C#串口编程的介绍
iOS网络编程之Socket.pdf
python-socketio 是 Socket.IO 服务器的 Python 实现 python-socketio Socket.IO 实时客户端和服务器的 Python 实现。 资源文档 PyPI 更改日志问题? 查看其他人在 Stack Overflow 上提出的问题,或提出您自己的...
本人现在在上大一,学校通过python123.io进行作业检测与考试,我通过(包括CSDN在内的)各种平台、各种渠道获得了一些适用于python123平台的代码,在被python反复折磨后,我把我用于交作业的这些代码分享出来,供...
SocketTool调试软件是一款网络TCP/UDP通信调试工具,本工具集功能强大与简单易用为一体,是无需安装的免费绿色软件。 它可以帮助网络编程人员、网络维护人员检查所开发的网络应用软硬件的通信状况。 是一款非常好用...
Vue3,springboot,element-ui使用技巧,...详细介绍了一些Qt框架的各种功能和模块,以及如何使用Qt进行GUI开发、网络编程和跨平台应用开发等。 适用于初学者和有经验的开发者,能够帮助你快速上手Qt并掌握其高级特性。
1、用VS2010进行Socket代码的编写 2、先打开server(服务器),然后打开client(客户端) 3、要建立远程连接时,修改代码中的IP,和端口号即可 4、在客户端,发送1、2、3.......8 服务器有响应 5、可以跨平台对接
MTK_SOCKET.pdf 官方文档 MTK_SOCKET.pdf 官方文档 MTK_SOCKET.pdf 官方文档
Java Socket编程.pdf Java Socket编程.pdf Java Socket编程.pdf
实验报告 实验一 Socket编程 一、实验目的 通过socket程序的编写、调试,掌握socket编程的基本方法,了解客户端与服务器端的特点,掌握并熟悉运用socket类与ServerSocket类。 实验内容 学习socket编程使用的类和接口...
C语言socket编程.pdf