node.js中的socket.io的广播消息_node.js

在多个客户端与服务器端建立连接后,socket.io()服务器具有一个sockets属性,属性值为所有与客户端建立连接的socket对象.可以利用该对象的send方法或emit方法向所有客户端广播消息.

io.sockets.send("user commected);

io.socket.emit("login",names);

案例

server.js代码:

复制代码 代码如下:

var express=require("express");
var http=require("http");
var sio=require("socket.io");
var app=express();
var server=http.createServer(app);
app.get("/", function (req,res) {
    res.sendfile(__dirname+"/index.html");
});
server.listen(1337,"127.0.0.1", function () {
    console.log("开始监听1337");
});
var io=sio.listen(server);
 var names=[];
io.sockets.on("connection", function (socket) {
    socket.emit("login",names);
    socket.on("login", function (name) {
        names.push(name);
        io.sockets.emit("login",names);
    });
});

复制代码 代码如下:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script src="/socket.io/socket.io.js"></script>
    <script>
        var socket=io.connect();
        socket.on("login", function (names) {
            var str="";
            names.forEach(function(name){
                str+="用户"+name+"已登录.<br/>";
            });
            document.getElementById("result").innerHTML=str;
        });
        function add(){
            socket.emit("login",document.getElementById("nickname").value);
        }
    </script>
</head>
<body>
昵称<input type="text" id="nickname" />
<div id="result"></div>
<input type="button" onclick="add()" value="登录" />
</body>
</html>

运行结果:

在谷歌浏览器里面的登录,可以在火狐中看到一模一样的结果.

这是一个美妙的现象,也是一个让我万分惊喜的效果.

如此美妙的node.

时间: 2024-11-30 09:46:26

node.js中的socket.io的广播消息_node.js的相关文章

node.js中使用socket.io制作命名空间_node.js

如果开发者想在一个特定的应用程序中完全控制消息与事件的发送,只需要使用一个默认的"/"命名空间就足够了.但是如果开发者需要将应用程序作为第三方服务提供给其他应用程序,则需要为一个用于与客户端连接的socket端口定义一个独立的命名空间. io.of(namespace) 制作两个命名空间 chat和news然后在客户端相互发送信息. 复制代码 代码如下: var express=require("express"); var http=require("h

node.js中使用socket.io的方法_node.js

使用socket.io的使用创建一个socket.io服务器即可.但是该服务器依赖于一个已经创建的http服务器. 在http服务器运行之后,使用listen方法为该http服务器附加一个socket.io服务器. 复制代码 代码如下: var sio=require("scoket.io"); var socket=sio.listen(server); socket就是在server基础上创建的一个socket.io服务器. 当客户端与服务器端建立连接时,触发socket.io服务

node.js中的Socket.IO使用实例_node.js

1. 简介 首先是Socket.IO的官方网站:http://socket.io 官网非常简洁,甚至没有API文档,只有一个简单的"How to use"可以参考.因为Socket.IO就跟官网一样简洁好用易上手. 那么Socket.IO到底是什么呢?Socket.IO是一个WebSocket库,包括了客户端的js和服务器端的nodejs,它的目标是构建可以在不同浏览器和移动设备上使用的实时应用.它会自动根据浏览器从WebSocket.AJAX长轮询.Iframe流等等各种方式中选择最

Node.js中路径处理模块path详解_node.js

前言 在node.js中,提供了一个path某块,在这个模块中,提供了许多使用的,可被用来处理与转换路径的方法与属性,将path的接口按照用途归类,仔细琢磨琢磨,也就没那么费解了.下面我们就来详细介绍下关于Node.js中的路径处理模块path. 获取路径/文件名/扩展名      获取路径:path.dirname(filepath)      获取文件名:path.basename(filepath)      获取扩展名:path.extname(filepath) 获取所在路径 例子如下

快速掌握Node.js中setTimeout和setInterval的使用方法_node.js

Node.js和js一样也有计时器,超时计时器.间隔计时器.及时计时器,它们以及process.nextTick(callback)函数来实现事件调度.今天先学下setTimeout和setInterval的使用. 一.setTimeout超时计时器(和GCD中的after类似) 在node.js中可以使用node.js内置的setTimeout(callback,delayMillSeconds,[args])方法.当调用setTime()时回调函数会在delayMillSeconds后 执行

Node.js中对通用模块的封装方法_node.js

在Node.js中对模块载入和执行进行了包装,使得模块文件中的变量在一个闭包中,不会污染全局变量,和他人冲突. 前端模块通常是我们开发人员为了避免和他人冲突才把模块代码放置在一个闭包中. 如何封装Node.js和前端通用的模块,我们可以参考Underscore.js 实现,他就是一个Node.js和前端通用的功能函数模块,查看代码: 复制代码 代码如下:  // Create a safe reference to the Underscore object for use below.  va

Node.js中的流(Stream)介绍_node.js

什么是流? 说到流,就涉及到一个*nix的概念:管道--在*nix中,流在Shell中被实现为可以通过 |(管道符) 进行桥接的数据,一个进程的输出(stdout)可被直接作为下一个进程的输入(stdin). 在Node中,流(Stream)的概念与之类似,代表一种数据流可供桥接的能力. pipe 流化的精髓在于 .pipe()方法.可供桥接的能力,在于数据流的两端(上游/下游 或称为 读/写流)以一个 .pipe()方法进行桥接. 伪代码的表现形式为: 复制代码 代码如下: //上游.pipe

Node.js中JavaScript操作MySQL的常用方法整理_node.js

一.建立数据库连接:createConnection(Object)方法      该方法接受一个对象作为参数,该对象有四个常用的属性host,user,password,database.与php中链接数据库的参数相同.属性列表如下: host: 连接数据库所在的主机名. (默认: localhost)  port: 连接端口. (默认: 3306)  localAddress: 用于TCP连接的IP地址. (可选)  socketPath: 链接到unix域的路径.在使用host和port时

node.js中的http.response.end方法使用说明_node.js

方法说明: 结束响应,告诉客户端所有消息已经发送.当所有要返回的内容发送完毕时,该函数必须被调用一次. 如何不调用该函数,客户端将永远处于等待状态. 语法: 复制代码 代码如下: response.end([data], [encoding]) 接收参数: data                           end()执行完毕后要输出的字符,如果指定了 data 的值,那就意味着在执行完 response.end() 之后,会接着执行一条 response.write(data , e