`
superisaac
  • 浏览: 64306 次
  • 性别: 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运行环境,它...

    在线聊天室(网页版,node.js和socket.io实现)

    在这个项目中,我们将探讨如何使用Node.js和Socket.IO来构建一个网页版的在线聊天室。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它让开发者可以使用JavaScript进行服务器端编程。Socket.IO则是一个库,...

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

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

    socket.io-client:用于ESP8266和Arduino的socket.io-client实现

    Socket.IO 是一个实时应用框架,它为开发人员提供了一种简单的方式来实现实时、双向通信。这个框架在服务器端和客户端都有实现,使得通过WebSockets或其他备用协议进行实时通信变得容易。在Arduino和ESP8266平台上,...

    基于koa+node.js+socket.io实现简易聊天室源码.zip

    这是一个使用JavaScript技术栈,具体是Koa、Node.js和Socket.IO构建的简易聊天室的源码项目。这个项目可以帮助我们深入了解实时通信、WebSockets以及如何在后端和前端之间建立实时连接。以下是对这个项目中涉及的...

    使用NodeJS、Express、Peerjs、Socket.io构建的视频聊天应用程序_JavaScript.zip

    在这个项目中,我们探讨的是如何使用Node.js、Express、Peer.js和Socket.io构建一个实时的视频聊天应用程序。这个技术组合提供了高效、灵活且实时的网络通信能力,是现代Web开发中的常见选择。以下是对这些技术及其...

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

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

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

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

    first-socket.io:使用socket.io的第一个实际项目

    要理解此代码,有必要了解Web编程的基础知识,因为我将仅演示该出色的工具socket.io的一些示例。 来吧,首先在您选择的目录中初始化一个node项目,并使用您的喜好名称将其命名为first-socket.io 。 mkdir first-...

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

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

    vue-socket-io-example-master.rar

    3. **事件驱动编程**:在Socket.IO中,通信基于事件模型,客户端和服务器都可以触发和监听事件。例如,服务器可以广播一个"news"事件,客户端通过监听这个事件来获取更新。 4. **组件通信**:在Vue.js中,你可以...

    Node.js-KeFu在线客服系统开发语言NodeJS。通信库Socket.IO。UI库前端SUI后端LayUI.

    2. **Socket.IO**: Socket.IO 是一个为实时应用而设计的库,它通过WebSocket协议实现实时双向通信。在KeFu系统中,Socket.IO起到了关键作用,允许客服和客户之间进行实时聊天,无需刷新页面。它支持多种传输方式,如...

    socket.io-node.js-server

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

    apihero-module-socketio:Socket.io集成到ApiHero

    "JavaScript" 标签表明这个话题主要涉及JavaScript编程语言,因为Socket.io是基于Node.js(JavaScript的服务器端运行环境)的,并且ApiHero也使用JavaScript编写。 **文件名称列表分析:** "apihero-module-...

    一个简单的maven-socket连接demo

    `Socket.IO` 是一个流行的库,它提供了强大的实时双向通信功能,适用于Web应用。本示例是一个基于Maven构建的简单`Socket.IO`连接Demo,让我们深入探讨这个主题。 首先,`Maven`是一个项目管理工具,广泛用于Java...

    engine.io:Engine.IO和Socket.IO(1.0)协议的Haskell服务器实现

    在Haskell中实现Engine.IO和Socket.IO(1.0)协议的服务器端,可以为开发者提供一个高度类型安全和高效的环境来处理这些实时交互。 Engine.IO是Socket.IO的基础,它负责建立和维护WebSocket或轮询等低级传输机制,...

    前后端socket通信.zip

    4. **Socket.IO**:Socket.IO是一个跨平台的库,支持WebSocket以及其他降级选项(如轮询),以确保在各种浏览器和设备上实现可靠的实时通信。它简化了前端和后端的Socket编程,提供了丰富的API和事件驱动的架构。 5...

    node.js利用socket.io实现多人在线匹配联机五子棋

    在本文中,我们将深入探讨如何使用Node.js和Socket.IO实现一个多人在线匹配的五子棋游戏。Socket.IO是一个实时应用框架,它允许开发者在客户端和服务器之间建立双向通信,非常适合用于构建实时、交互性强的游戏应用...

    snake_socket:一个多服务器的蛇游戏。由react,node和socket.io制作

    【描述】:“snake_socket”是一个项目,它实现了一个基于多服务器的蛇游戏,使用了前端框架React、后端技术Node.js以及实时通信库Socket.IO。这个项目展示了如何将这些现代Web开发工具和技术整合在一起,构建一个...

Global site tag (gtag.js) - Google Analytics