express4.X框架中使用socket.io

项目代码下载:点击这里

-- 基本介绍

express

express命令行生成项目框架点击这里;

socket.io

socket.io的作用是实时刷新,主要用于聊天室,竞拍等场景,socket.io封装了以下5种方法

Adobe? Flash? Socket

AJAX long polling

AJAX multipart streaming

Forever Iframe

JSONP Polling

在浏览器运行的时候,socket.io会自动从上到下选择浏览器所支持的最优技术;

所以,在使用socket.io的时候完全不用担心浏览器兼容问题,手机端同样兼容.

-- 命令行生成项目

生成项目框架

我在F盘生成了一个socketio的项目,不会的点击这里.

安装socket.io

npm install socket.io

封装socket.io

在项目根目录下创建socket.js文件:

/*
封装socket.io,为了获取server以便监听.
2016年8月8日10:28:24
 */
var socketio = {};
var socket_io = require('socket.io');

//获取io
socketio.getSocketio = function(server){

	var io = socket_io.listen(server);

};

module.exports = socketio;

引入封装

这一步是为了让socket.io能在express中运行的关键.

改造bin目录下的www文件

首先:引入上面封装好的socket.js文件,

在var http = require(‘http‘);后面加入

var io = require(‘../socketio‘);

然后:在var server = http.createServer(app);后面加入

io.getSocketio(server);

这样在express中就能使用socket.io了,下面改造项目测试.

-- 改造项目

-- socket.js

监听了一个click1事件,触发click2事件.

/*
封装socket.io,为了获取server以便监听.
2016年8月8日10:28:24
 */
var socketio = {};
var socket_io = require('socket.io');

//获取io
socketio.getSocketio = function(server){

	var io = socket_io.listen(server);

	io.sockets.on('connection', function (socket) {
		console.log('连接成功');
		socket.on('click1',function(){
			console.log('监听点击事件');
			var datas = [1,2,3,4,5];
			socket.emit('click2', {datas: datas});
      socket.broadcast.emit('click2',  {datas: datas});
		})
	})
};

module.exports = socketio;

-- index.ejs

页面的socket.io.js引用的是cdn静态资源,添加一个按钮,触发click1事件,

监听click2事件,获取后台传过来的值,循环放到ul中.

<!DOCTYPE html>
<html>
  <head>
    <title><%= title %></title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
    <!--socket.io-->
		<script type="text/javascript" src="http://cdn.staticfile.org/socket.io/1.3.7/socket.io.js"></script>
  </head>
  <body>
    <h1><%= title %></h1>
    <p>Welcome to <%= title %></p>
    <button onclick="a()">按钮</button>
    <ul id="ultext">

    </ul>
  </body>

  <script type="text/javascript">
  	var socket = io();
  	function a(){
  		socket.emit('click1');
  	}

  	//监听click2事件
  	socket.on('click2', function(data){
  		var htmldatas = data.datas;
  		var html = '';
  		for (var i = 0; i < htmldatas.length; i++) {
  			var htmldata = htmldatas[i];
  			html += '<li>'+htmldata+'</li>';
  		}
  		document.getElementById('ultext').innerHTML = html;
  	})
  </script>
</html>

-- 测试效果

运行:访问http://localhost:3000/

为了看到效果,开3个一样的窗口.随便点击其中一个页面的按钮

----------------------点击前

----------------------点击后

---------------------------------------------完成.

项目代码下载:点击这里

时间: 2024-08-30 07:49:45

express4.X框架中使用socket.io的相关文章

Nodejs 中使用Socket.io

安装socket.io npm install socket.io 或者在package.json文件中添加socket.io的依赖包,然后npm install安装所需模块. 在Express http服务器中使用socket.io 在 bin/www 文件中添加: var io = require('socket.io'); var socket = io.listen(server); socket.on('connection', function(client) { console.l

node中的socket.io制作命名空间

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

Node中的Socket.IO 简单Demo及说明

注:下面Demo的Server和Client都是纯后端. 并没有web页面. Server端代码: var express = require('express'); var app = express(); var server = require('http').createServer(app); var io = require('socket.io')(server); //定义变量,用来存储socket.如果是多进程的话,那么socket可以考虑存入redis中 var socket

解决CocosCreator 在微信小游戏中使用Socket.io 报错的问题

最近微信小游戏比较火,准备试着做一个Demo来玩一玩,网络通信这块就选择了socket.io,打包成微信工程,编译出现如下错误: 对于我这种菜逼(就目前的情况,自我感觉是挺菜的)来说,第一个想到的事情就是百度,百度不行,然后就谷歌,发现在cocos中文社区里面有很多人提到了这个问题,但是没有人回答,谷歌发现有大神重写了一套能够在微信小程序中使用的socket.io.emma..这些对于我来说,感觉太麻烦了,百度,谷歌无果,在回过头来仔细看看这个错误.提示io没有找到,竟然io没有找到,那我就给他

vue + socket.io实现一个简易聊天室

vue + vuex + elementUi + socket.io实现一个简易的在线聊天室,提高自己在对vue系列在项目中应用的深度.因为学会一个库或者框架容易,但要结合项目使用一个库或框架就不是那么容易了.功能虽然不多,但还是有收获.设计和实现思路较为拙劣,恳请各位大大指正. 可以达到的需求 能查看在线用户列表 能发送和接受消息 使用到的框架和库 socket.io做为实时通讯基础 vuex/vue:客户端Ui层使用 Element-ui:客户端Ui组件 类文件关系图 服务端: 客户端: 服

使用 Socket.IO 开发聊天室

前言 Socket.IO 是一个用来实现实时双向通信的框架,其本质是基于 WebSocket 技术. 我们首先来聊聊 WebSocket 技术,先设想这么一个场景: · 用户小A,打开了某个网站的充值界面,该界面上有一个付款的二维码. · 当小A 用某宝的 APP 扫码付款之后,网页要自动跳转到付款成功的界面.最简单的方法就是网页每隔一段时间就请求一次服务器--"怎么样?那货付款没有?","怎么样?还没付吗?","怎么样?这次总该付了吧". ·

反向Ajax,第3部分:Web服务器和Socket.IO

英文原文:Reverse Ajax, Part 3: Web servers and Socket.IO 前言 时至今日,用户期待的是可通过web访问快速.动态的应用.这一文章系列展示了如何使用反向Ajax(Reverse Ajax)技术来开发事件驱动的web应用.系列的第1部分介绍了反向Ajax.轮询(polling).流(streaming).Comet和长轮询(long polling).你已经了解了Comet是如何使用HTTP长轮询的,这是可靠地实现反向Ajax的最好方式,因为现有的所有

socket.io入门,简易聊天室

介绍 通常我们web使用的是http协议,但是 HTTP 协议有一个缺陷:通信只能由客户端发起. 所以我们需要一个可以由服务端主动发出的协议,即WebSocket. WebSocket是HTML5新增的一种通信协议,其特点是服务端可以主动向客户端推送信息,客户端也可以主动向服务端发送信息,是真正的双向平等对话,属于服务器推送技术的一种. Socket.IO 是一个基于 Node.js 的实时应用程序框架,在即时通讯.通知与消息推送,实时分析等场景中有较为广泛的应用. socket.io 包含两个

使用Node.js的socket.io模块开发实时web程序

首发:个人博客,更新&纠错&回复 今天的思维漫游如下:从.net的windows程序开发,摸到nodejs的桌面程序开发,又熟悉了一下nodejs,对“异步”的理解有了上上周对操作系统的学习而更能理解.然后发现了Node.js中的socket.io这个模块,又觉得跟前几天用.net做客户端的socket游戏了.技术世界,兜兜转转,相逢一笑,疑是故人. socket.io用来做实时web程序,解决之前的B/S程序只有无状态连接,特定需求还需要用长连接这种“奇技淫巧”的问题.当然,这是html