服务端:

1.监听客户端连接:

io.on("connection",socket=>{ });

不分组数据传输:传输对象为当前socket

2.1给该socket所有客户端广播消息

socket.emit("名称",内容);

2.2给该socket除了自己外的所有客户端广播消息

socket.broadcast.emit("名称",内容);

2.3给该socket所有客户端广播消息

socket.emit("名称",内容);

2.4给在game房间内除了自己的其他所有客户端广播消息

socket.broadcast.to(‘game’).emit("名称",内容);

2.5给在game房间内包括自己的所有客户端广播消息

io.sockets.in(‘game’).emit("名称",内容);

3.监听该socket的客户端发送给服务端的消息

socket.on("名称",msg=>{ });

分组数据传输:生成命名空间来管理用户

服务端:

io.sockets.on('connection', function (socket) {

socket.on('firefox', function (data) {

socket.join('firefox');

});

socket.on('chrome',function(data){

socket.join('chrome');

});

});

//emit to 'room' except this socket client

socket.broadcast.to('chrome').emit('event_name', data);

//emit to all socket client in the room

io.sockets.in('chrome').emit('event_name', data)

客户端:

socket.emit('firefox'); //就可以加入 firefox 聊天室

socket.emit('chrome');  //就可以加入 chrome 聊天室

socket连接需要添加权限验证,让已登录用户socket直接连接到服务器上,未登陆的用户无条件拒绝连接

callback 函数有两个参数,第一个为 error ,第二个参数为是否授权bool值,通过授权回调函数应为 callback(null,true) ,其它情况下都为拒绝建立连接。

io.sockets.authorization(function (handshakeData, callback) {

callback(null, true);

}).

websocket是持久化的协议,http是非持久化的协议。

http的1.0协议中一个http连接只有一次request和response;

http的1.1协议中允许一个http连接,存在多次请求和接收数据。

websocket连线过程中,浏览器和服务器只需要做一个握手的动作就形成了一条快速通道,实现两者相互推送数据。

Socket.IO是一个WebSocket库,包括了客户端的js和服务器端的nodejs,它的目标是构建可以在不同浏览器和移动设备上使用的实时应用。

在客户端的话,可以通过<script src="/socket.io/socket.io.js"></script>

或引用socket.io的CDN服务。                      <scriptsrc="http://cdn.socket.io/stable/socket.io.js"></script>

socket.io实现监听:

1.引用socket.io模块,调用listen方法传入端口号即可;

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

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

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

socket.io实现事件注册:

服务端:connection、disconnect、emit

客户端:connect、connecting、disconnect、connect_failed、reconnect、emit

io.on(connection,function(socket){

//连接成功

console.log("socket连接成功")

//断开连接

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

console.log("socket连接断开")

})

})

socket.io提供两种服务端广播方式。参数一:名称;参数二:内容

1.全局广播:socket.broadcast.emit('DATA',data);

2.命名空间广播:socket.broadcast.to('chat').emit('DATA',data)

1.创建对象:var ws = new WebSocket(url,name);

2.发送文本消息:ws.send(msg);

3.接受消息:ws.onmessage = (function(){...})();

4.错误处理:ws.onerror = (function(){...})();

5.关闭连接:ws.close();

var socket;

if(typeof(WebSocket) == "undefined") {

alert("您的浏览器不支持WebSocket");

return;

}

//连接

$("#btnConnection").click(function() {

//实例化WebSocket对象,指定要连接的服务器地址与端口

socket = new WebSocket("ws://192.168.1.2:8888");

//打开事件

socket.onopen = function() {

alert("Socket 已打开");

socket.send("这是来自客户端的消息" + location.href + new Date());

};

//获得消息事件

socket.onmessage = function(msg) {

alert(msg.data);

};

//关闭事件

socket.onclose = function() {

alert("Socket已关闭");

};

//发生了错误事件

socket.onerror = function() {

alert("发生了错误");

}

});

服务端:

1.监听客户端连接 io.on('connection',socket=>{ })

最新文章

  1. ES6之const命令
  2. JavaScript之数组方法整理
  3. Java 反射的应用
  4. apache virtualhost 针对ip开放访问
  5. 【PHP小项目使用MVC架构】
  6. dotnet core 初试两个小问题解决
  7. centos 7 安装 mariadb数据库
  8. vim插件配置(一)
  9. northern truck 是什么牌子?具体_百度知道
  10. java设计模式之——适配器模式
  11. javascript练习题(3):基础字符串运算
  12. 获取sql执行时间
  13. 来腾讯云开发者实验室 学习.NET
  14. C#使用ES
  15. oracle utl_http 访问https类型
  16. PAT A1124 Raffle for Weibo Followers (20 分)——数学题
  17. SpringMvc @JsonView 使用方式
  18. Java 注解的概念与种类
  19. jQuery--- .hasOwnProperty 用法
  20. [uart]3.tty驱动分析

热门文章

  1. Luogu P2717 寒假作业(平衡树)
  2. Python全栈开发:基本数据类型
  3. 使用vue-cli3快速适配H5项目
  4. Android开发 MediaPlayer将视频播放时尺寸适配完美
  5. 【玲珑杯 round#18 A】计算几何你瞎暴力
  6. C++函数模板&amp;类模板
  7. LUOGU P1514 引水入城 (bfs)
  8. QQ邮箱发送信息
  9. Spring中的Junit
  10. NYOJ--860 又见01背包(01背包)