`
superisaac
  • 浏览: 65524 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一小时的极限编程, 关于socket.io

阅读更多


昨天晚上花了一小时,体验了下快速极限编程,使用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
分享到:
评论
2 楼 zjy3771272 2012-11-29  
不知道你是在哪定义的,急啊。希望能解答我啊。谢谢!
1 楼 zjy3771272 2012-11-29  
你好,能说明一下data.cid

相关推荐

    nodeJS+socket.io做一个简单的聊天室

    在本文中,我们将深入探讨如何使用Node.js和Socket.IO创建一个简单的聊天室。这是一个非常实用的项目,适合初学者入门,同时也是对这两种技术的绝佳实践。 Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它...

    16课 NodeJS基础-第6天-{socket.io聊天室、文件操作 }.rar

    一、socket.io 聊天室 Socket.IO 是一个实时应用框架,它允许在客户端和服务器之间进行双向通信。在 Node.js 中,使用 socket.io 可以轻松创建实时交互的聊天应用。以下是一些关键知识点: 1. **安装**:首先,你...

    简单的乒乓球游戏#socket.io #node.js_JavaScript_代码_下载

    标题中的“简单的乒乓球游戏#socket.io #node.js_JavaScript_代码_下载”表明这是一个基于JavaScript、Node.js和Socket.IO的简单乒乓球游戏项目。在这个项目中,开发者利用这些技术创建了一个实时的、多人在线对战的...

    spring-socketio

    3. **创建Socket.IO客户端**:在客户端,我们需要使用Socket.IO的JavaScript库来创建一个Socket实例,连接到服务器的WebSocket端点。 4. **事件监听与处理**:在服务器端,我们可以通过监听各种Socket.IO事件(如'...

    用于 Delphi 的 Websockets 和 Socket.io链接

    WebSocket是一种用于在客户端和服务器之间进行双向通信的网络协议,而Socket.io则是一种基于WebSocket的实时通信库,提供了更多的功能和便利性。以下是关于这些资源的描述: WebSocket和Socket.io实现: 1. **...

    Go实现socket.io-emitter-Go-下载

    在IT行业中,网络通信是至关重要的部分,而Socket.IO是一个流行的实时应用框架,它允许双向、实时通信在客户端和服务器之间。在这个场景中,我们关注的是一个Go语言实现的Socket.IO-emitter库,用于在Go服务端模拟...

    socket.io-unity:Unity的socket.io客户端,带有node.js后端的强大游戏客户端

    Socket.IO 是一个实时应用框架,它为开发人员提供了一种简单的方式来实现实时、双向通信。在游戏开发中,实时性至关重要,无论是多人在线对战游戏还是协作游戏,都需要高效的数据传输来确保游戏体验。Unity 是一款...

    使用 node.js + socket.io + enchant.js 的 聊天游戏 示例_JavaScript_代码_下载

    在本项目中,我们探索的是如何使用 Node.js、Socket.IO 和 Enchant.js 构建一个聊天游戏。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它让开发者可以在服务器端使用 JavaScript 编程。Socket.IO 是...

    rust-socketio:用Rust编程语言编写的socket.io客户端的实现

    用Rust编程语言编写的socket.io客户端的实现。 此实现当前支持socket.io协议的修订版5,因此支持engine.io协议的修订版4。 如果与此客户端有任何连接问题,请确保服务器至少使用engine.io协议的修订版4。 用法示例 ...

    HTML5之WebSocket入门3 -通信模型socket.io

    socket.io是一个跨平台、跨浏览器的库,它为开发者提供了一个统一的API,用于处理多种实时通信协议,包括WebSocket、Flash Socket、AJAX长轮询、AJAX多部分流、Forever IFrame和JSONP轮询。这些协议的选择和切换由...

    聊天室、websocket、socket.io、毕业设计。.zip

    标题中的“聊天室、websocket、socket.io、毕业设计”揭示了这个压缩包文件涉及的核心技术领域,这主要是关于网络通信和实时交互应用的开发。在毕业设计中,这些技术常被用于构建在线聊天应用程序,让学生能够展示...

    SocketioDemo(Kotlin)

    SocketioDemo(Kotlin)是一个基于Kotlin编程语言的示例项目,主要展示了如何使用Socket.IO库来实现客户端的长连接通信。Socket.IO是一种实时、双向通信框架,它在Web开发中广泛用于实现实时推送通知、聊天应用等功能...

    使用System.IO.Ports读取COM口数据

    C#串口编程之使用System.IO.Ports读取COM口数据 C#串口编程是计算机编程中的一种重要技术,用于控制和管理串行通信端口。串行通信是一种常用的数据传输方式,广泛应用于工业自动化、机器人控制、医疗器械等领域。...

    socket_io-express-solution-master.rar

    这是一个关于使用Socket.IO和Express构建实时Web应用的解决方案。Socket.IO是一个实时应用框架,它允许在客户端和服务器之间进行实时、双向通信。Express是Node.js中最受欢迎的Web应用框架,用于构建API和Web站点。...

    Android-AndroidAsync异步SocketHTTP(客户端服务器)WebSocket和socket.io库

    Socket.io是一个跨平台的库,它在WebSocket基础上添加了额外的错误检测和恢复机制,以确保在网络不稳定时也能保持通信。Socket.io库在Android中提供了客户端库,可以方便地集成到应用中,实现与Node.js服务器的实时...

    易语言-Socket IO协议

    Socket.IO 是一种实时应用程序框架,它为Web开发者提供了一种简单、高效的通信协议,使得客户端与服务器之间的双向通信变得容易。在本项目中,"易语言-Socket IO协议" 提供了一个实现,但只完成了Text部分,Binary...

    react-chat-app:使用 Socket.io 的简单 ReactJS 聊天应用

    - **异步编程**: 在处理Socket.io的实时通信时,可能会涉及到Promise或async/await的使用,确保数据的正确同步。 - **错误处理**: 为了保证应用的健壮性,需要对可能出现的网络错误或服务器异常进行处理,通常通过...

    SocketIO.zip

    4. **Socket.IO客户端**:SocketIoClientDotNet是Socket.IO的C#客户端实现,它封装了Engine.IO的细节,提供了更高级别的API,使得开发者可以更容易地使用Socket.IO特性,如事件监听、发送消息等。 5. **Newtonsoft....

    socket.io-node.js-server

    Socket.IO 是一个实时应用框架,它为Web开发者提供了一种简单、高效的实时通信解决方案。它在Node.js环境中运行,结合了WebSocket与其他多种浏览器兼容的技术,确保数据能够在客户端和服务器之间实时双向传输。在这...

Global site tag (gtag.js) - Google Analytics