node的socket.io的之基本使用方法.

使用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服务的connection事件.

socket.on("connection",function(socket){

});

回调函数中的socket参数是服务器端与客户端建立连接的socket端口对象.

当接收到客户端发送的消息时,发出socket端口对象的message事件.

socket.on("message",function(msg){

});

回调函数的参数是客户端发送的消息.

可以使用socket.send(msg)向客户端发送一个消息.

当服务器端可客户端的连接断开时触发disconnect事件.

socket.on("disconnect",funciton(){

});

该回调函数不适用任何参数.

服务器端server.js代码:

 1 var http=require("http");
 2 var sio=require("socket.io");
 3 var fs=require("fs");
 4 var server=http.createServer(function (req,res) {
 5     res.writeHead(200,{"Content-type":"text/html"});
 6     res.end(fs.readFileSync("./index.html"));
 7 });
 8 server.listen(1337);
 9 var socket=sio.listen(server);
10 socket.on("connection", function (socket) {
11    console.log("客户端建立连接");
12     socket.send("你好");
13     socket.on("message", function (msg) {
14         console.log("接收到一个消息:"+msg);
15     });
16     socket.on("disconnect", function () {
17         console.log("客户端断开连接.");
18     });
19 });

创建客户端index.html代码:

 1 <!DOCTYPE html>
 2 <html>
 3 <head lang="en">
 4     <meta charset="UTF-8">
 5     <title></title>
 6     <script src="/socket.io/socket.io.js"></script>
 7     <script>
 8         var socket=io.connect();
 9         socket.on("message", function (data) {
10             console.log(data);
11             socket.send("消息已接受到.")
12         });
13         socket.on("disconnect", function () {
14             console.log("服务器端断开连接.");
15         });
16     </script>
17 </head>
18 <body>
19
20 </body>
21 </html>

这段代码:/socket.io/socket.io.js有服务器端socket.io类库提供,不需要再客户端实际放置一个socket.io.js文件.

在脚本文件中,首先使用io.connect()方法连接服务器端socket.io服务器.

该方法返回一个与服务器端建立连接的客户端socket端口对象.

当接受到服务器端发送的消息时,触发客户端socket端口对象的message事件.

socket.on("message",function(msg){

});

msg是服务器端发送的数据;

也可以使用客户端的socket对象的send()方法向服务器端发送数据.

socket.send(msg);

当服务器端断开连接时,触发客户端socket端口对象的disconnect事件,

socket.on("disconnect",function(){

})

这个回调函数不使用任何参数.

注意:

客户端的消息机制与服务器端的消息处理机制是完全一致的.因为socket.io确保客户端与服务器端共享相同的API.

运行后的结果:

当关闭浏览器是,就断开了与服务器的连接,此时服务器端触发disconnect事件,客户端断开连接.

时间: 2024-10-10 16:23:46

node的socket.io的之基本使用方法.的相关文章

使用Node.js+Socket.IO搭建WebSocket实时应用【转载】

原文:http://www.jianshu.com/p/d9b1273a93fd Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新.它有着广泛的应用场景,比如在线聊天室.在线客服系统.评论系统.WebIM等. WebSocket简介 谈到Web实时推送,就不得不说WebSocket.在WebSocket出现之前,很多网站为了实现实时推送技术,通常采用的方案是轮询(Polling)和Comet技术,Comet又可细分为两种实现方

[转载]使用node.js+socket.io搭建实时消息系统

在开发web应用时,经常会有消息接收需求.例如后台处理完某个任务,需要告知用户等.一个简单的做法,是使用ajax轮询.这样带来的问题一是低效,二是消息触达不够实时.另一个方法是使用websocket来接收消息,但可惜IE不支持这种方式.下面推荐一种既能实时接收消息,又能兼容各种浏览器的方案,那就是node.js+socket.io. node.js的异步非阻塞模型,做消息推送非常合适.socket.io则负责屏蔽浏览器的差异,其会选择性的使用下列方式建立连接:websocket, flash s

使用Node.js+Socket.IO搭建WebSocket实时应用

Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新.它有着广泛的应用场景,比如在线聊天室.在线客服系统.评论系统.WebIM等. 作者:潘良虎链接:https://www.zhihu.com/question/20215561/answer/26419995来源:知乎原文地址:http://www.plhwin.com/2014/05/28/nodejs-socketio/ WebSocket简介 谈到Web实时推送,就不得不说

Node.js+socket.io在线聊天室

Node.js+socket.io实现在线聊天室,照着这个教程做的,稍加改动即可实现. Node.js:0.10.31 Express:3.* 创建工程chat: 添加几个文件,工程结构如下 代码: package.json: { "name": "application-name", "version": "0.0.1", "private": true, "scripts": { &

(转)使用Node.js+Socket.IO搭建WebSocket实时应用

Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新.它有着广泛的应用场景,比如在线聊天室.在线客服系统.评论系统.WebIM等. WebSocket简介 谈到Web实时推送,就不得不说WebSocket.在WebSocket出现之前,很多网站为了实现实时推送技术,通常采用的方案是轮询(Polling)和Comet技术,Comet又可细分为两种实现方式,一种是长轮询机制,一种称为流技术,这两种方式实际上是对轮询技术的改进,这些方案

用node.js(socket.io)实现数据实时推送

在做商品拍卖的时候,要求在商品的拍卖页面需要实时的更新当前商品的最高价格.实现的方式有很多,比如: 1.setInterval每隔n秒去异步拉取数据(缺点:更新不够实时) 2. AJAX轮询方式方式推送数据(缺点:服务端需要在死循环中反复查询数据库) 3.websocket推送数据(缺点:仅支持html5标准的浏览器) socket.io的简要介绍 所有客户端都通过socket.io挂在nodejs服务器上(注意: 只是挂着,不需要任何循环,因为它是事件驱动的):需要推送消息了,服务器就与nod

基于node.js+socket.io+html5实现的斗地主游戏(1)概述

一.游戏描述 说是斗地主游戏,其实是寝室自创的"捉双A",跟很多地方的捉红10.打红A差不多,大概规则是: 1.基础牌型和斗地主一样,但没有大小王,共52张牌,每人13张,这也是为什么题目直接叫斗地主游戏的原因了. 2.手牌有黑桃A和草花A的两个人一伙:若黑桃A和草花A都在一个人手里,那就自己一伙. 3.开牌之后可以选择亮A或者不亮A,亮A之后队友也应亮明身份,互相配合出牌. 4.随机指定最先出牌者. 5.按照手牌出完顺序记分数,分别记4.3.2.1分,最后整队加和,分数高的队伍获胜.

基于Node.js + socket.io实现WebSocket的聊天DEMO

原文摘自我的前端博客,欢迎大家来访问 http://hacke2.github.io 简介 最近看Node.js和HTML5,练手了一个简易版的聊天DEMO,娱乐一下 为什么需要socket.io? node.js提供了高效的服务端运行环境,但是由于浏览器端对HTML5的支持不一, 为了兼容所有浏览器,提供卓越的实时的用户体验,并且为程序员提供客户端与服务端一致的编程体验, 于是socket.io诞生. 简答来说socket.io具体以下特点: 1.socket.io设计的目标是支持任何的浏览器

node与socket.io搭配小例子-转载

//服务端代码 io = require('socket.io').listen(app), fs = require('fs'), cookie=require('cookie'); request=require('request'); global.userlist={}; app.listen(8080); //io.set('log level', 1);//将socket.io中的debug信息关闭 function handler (req, res) { res.writeHea