Socket.io 入门

设置一个简单的HTML网页,提供一个表单和一个信息的列表,通过node.js进行框架的搭建

使用node.js框架

1.新建一个chat-example文件夹,并建立一个package.json文件

{

  "name": "socket-chat-example",

  "version": "0.0.1",

  "description": "my first socket.io app",

  "dependencies": {}

}

2. 通过npm安装express,并建立index.js文件配置信息

npm install --save [email protected]
var app = require(‘express‘)();

var http = require(‘http‘).Server(app);

app.get(‘/‘, function(req, res){

  res.send(‘<h1>Hello world</h1>‘);

});

http.listen(3000, function(){

  console.log(‘listening on *:3000‘);

});

3.在命令行运行node index.js 你可以得到

在浏览器运行http://localhost:3000你可以得到

4.HTML页面的建立

创建index.html,并修改index.js里面的app.get函数,将路由连接到index.Html

<!doctype html>

<html>

  <head>

    <title>Socket.IO chat</title>

    <style>

      * { margin: 0; padding: 0; box-sizing: border-box; }

      body { font: 13px Helvetica, Arial; }

      form { background: #000; padding: 3px; position: fixed; bottom: 0; width: 100%; }

      form input { border: 0; padding: 10px; width: 90%; margin-right: .5%; }

      form button { width: 9%; background: rgb(130, 224, 255); border: none; padding: 10px; }

      #messages { list-style-type: none; margin: 0; padding: 0; }

      #messages li { padding: 5px 10px; }

      #messages li:nth-child(odd) { background: #eee; }

    </style>

  </head>

  <body>

    <ul id="messages"></ul>

    <form action="">

      <input id="m" autocomplete="off" /><button>Send</button>

    </form>

  </body>

</html>
app.get(‘/‘, function(req, res){

  res.sendFile(__dirname + ‘/index.html‘);

});

5.整合socket.Io

先安装socket.io

npm install --save socket.io

一般安装完,package.json会自动更新,再编辑index.js文件

var app = require(‘express‘)();

var http = require(‘http‘).Server(app);

var io = require(‘socket.io‘)(http);

app.get(‘/‘, function(req, res){

  res.sendFile(__dirname + ‘/index.html‘);

});

io.on(‘connection‘, function(socket){

  console.log(‘a user connected‘);

});

http.listen(3000, function(){

  console.log(‘listening on *:3000‘);

});

给index.html里面增加js代码,调取socket和jq框架,进行html和http的连接。

<script src="/socket.io/socket.io.js"></script>

<script src="https://code.jquery.com/jquery-1.11.1.js"></script>

<script>

  $(function () {

    var socket = io();

    $(‘form‘).submit(function(){

      socket.emit(‘chat message‘, $(‘#m‘).val());

      $(‘#m‘).val(‘‘);

      return false;

    });

  });

</script>

Index.js修改获取chat message节点,通过控制台查看message

io.on(‘connection‘, function(socket){

  socket.on(‘chat message‘, function(msg){

    console.log(‘message: ‘ + msg);

  });

});

通过io.emit进行事件发送

io.emit(‘some event‘, { for: ‘everyone‘ });

简单起见,我们将发送消息给每个人,包括发送方。

io.on(‘connection‘, function(socket){

  socket.on(‘chat message‘, function(msg){

    io.emit(‘chat message‘, msg);

  });

});
  <script>

  $(function () {

    var socket = io();

    $(‘form‘).submit(function(){

      socket.emit(‘chat message‘, $(‘#m‘).val());

      $(‘#m‘).val(‘‘);

      return false;

    });

    socket.on(‘chat message‘, function(msg){

      $(‘#messages‘).append($(‘<li>‘).text(msg));

    });

  });

</script>
时间: 2024-08-08 18:17:12

Socket.io 入门的相关文章

socket.io 入门篇(三)

本文原文地址:https://www.limitcode.com/detail/5926e3a056fba70278bf2044.html 前言 上篇我们介绍了 socket.io 中room的概念和使用,本篇我们继续深入了解 socket.io 中 namespace(命名空间)的概念和使用. 对于namespace的概念只需理解3个地方: 1.在不声明新的命名空间情况下,系统会默认使用default namespace. 2.不同命名空间下的socket是不能互相通信了,是处于隔离状态的.

socket.io入门,简易聊天室

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

NodeJS+Express+Socket.io的一个简单例子

初始化一个NodeJS web应用: 打开CMD窗口. 运行cmd:"mkdir myapp",新建一个文件夹,名为myapp. 运行cmd:"cd myapp",切换到文件夹myapp. 运行cmd:"npm init",创建文件package.json. 3.Express入门应用: 在上面的CMD窗口运行cmd:"npm install express --save", 安装"express" nod

Socket.IO学习之基础入门

原文:http://blog.csdn.net/weichuang_1/article/details/48831957 这里贴出Socket.IO官网 一.Socket.IO的介绍 Socket.IO支持及时.双向与基于事件的交流.它可以在每个平台.每个浏览器和每个设备上工作,可靠性和速度同样稳定. 实时分析:将数据推送到客户端,这些客户端会被表示为实时计数器,图表或日志客户. 实时通信和聊天:只需几行代码便可写成一个Socket.IO的”Hello,World”聊天应用. 二进制流传输:从1

反向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与sticky-session, 多个socket.io实例带来的问题

websocket的出现使得从服务器向浏览器推送数据更加容易.但是低版本的浏览器不支持websocket,这时socket.io出现了. 使用socket.io的应用在支持websocket的浏览器运行的时候使用websocket,而在低版本的浏览器中则使用传统的方式与服务器交互(例如long-polling及其他的方式). long-polling的应用实现方式是这样的,客户端向服务器端发起请求,服务器端不会马上返回,而是保持这个连接直到服务器需要推送信息给客户端时,才返回给客户端数据.客户端

socket.io对IE8的支持

默认下载了最新版的socket.io,版本号是1.7.2,对IE8的支持不好,反正在IE8下收发消息都不行.在网上查了很多资料,都解决不了IE8的问题,崩溃. 最后用了一个大家比较认可的版本1.0.6,可以支持IE8: 卸载socket.io npm uninstall socket.io 安装1.0.6版本的socket.io npm install [email protected] 后面的一些版本没有一一的去试,下了一个1.3.7版本的,还是可以支持收发消息的,只是发现IE8在关闭窗口时,

Socket.IO初探

建立Server //server.jsvar io = require('socket.io')(80); var chat = io .of('/chat') //设定命名空间 .on('connection', function (socket) { socket.emit('a message', { //这个只会发送给自己的socket that: 'only' , '/chat': 'will get' }); chat.emit('a message', { //全局发送 ever

【socket.io研究】0.前提准备

WebSocket出现之前,web实时推送,一般采用轮询和Comet技术(可细分为长轮询机制和流技术两种),需要大量http请求,服务器受不了.HTML5定义了WebSocket协议,基于TCP协议,由通讯协议和编程API组成,在浏览器和服务器之间建立双向连接,以基于事件的方式,赋予浏览器实时通讯的能力. 建立WebSocket连接的过程是浏览器首先发起一个http请求,在请求头中附带着“Upgrade: WebSocket”头信息,表名申请协议升级,服务器解析后产生应答信息,服务器与客户端的W