You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// 创建一个Socket实例varsocket=newWebSocket('ws://localhost:8080');// 打开Socket socket.onopen=function(event){// 发送一个初始化消息socket.send('I am the client and I\'m listening!');// 监听消息socket.onmessage=function(event){console.log('Client received a message',event);};// 监听Socket的关闭socket.onclose=function(event){console.log('Client notified socket has closed',event);};// 关闭Socket.... //socket.close() };
varapp=require('http').createServer(function(req,res){})vario=require('socket.io')(app);app.listen(80);io.on('connection',function(socket){socket.emit('news',{hello: 'world'});socket.on('my other event',function(data){console.log(data);});});
<!DOCTYPE html><html><head><metacharset="UTF-8"><title></title></head><body></body><scriptsrc="js/socket.js"></script><script>varsocket=io('http://localhost');socket.on('news',function(data){console.log(data);socket.emit('my other event',{my: 'data'});});</script></html>
此时长连接后端有改动,前端就立即能接受新的值
发送公共信息
server
io.on('connection',function(socket){io.emit('pub',{will: 'be received by everyone'});//orio.sockets.emit("pub",{data:"hello,all"});});
介绍
在HTML5规范中,WebSocket现在越来越流行。WebSocket提供了一个受欢迎的技术,以替代我们过去几年一直在用的Ajax技术,这个新的API提供了一个方法,从客户端使用简单的语法有效地推动消息到服务器。让我们看一看HTML5的WebSocket API,它可用于客户端、服务器端。而且有一个优秀的第三方API,名为Socket.IO
WebSocket是下一代客户端-->服务器的异步通信方法。该通信取代了单个的TCP套接字,使用ws或wss协议,可用于任意的客户端和服务器程序。WebSocket目前由W3C进行标准化。WebSocket已经受到Firefox 4、Chrome 4、Opera 10.70以及Safari 5等浏览器的支持。
WebSocket最伟大之处在于服务器和客户端可以在给定的时间范围内的任意时刻,相互推送信息。WebSocket并不限于以Ajax(或XHR)方式通信,因为Ajax技术需要客户端发起请求,而WebSocket服务器和客户端可以彼此相互推送信息,XHR受到域的限制,而WebSocket允许跨域通信。
WebSocket技术很聪明的一点是没有设计要使用的方式。WebSocket为指定目标创建,用于双向推送消息。
原生客户端WebSocket
下面的代码片段是打开一个连接,为连接创建事件监听器,断开连接,消息时间,发送消息返回到服务器,关闭连接。
让我们来看看上面的初始化片段。参数为URL,ws表示WebSocket协议。onopen、onclose和onmessage方法把事件连接到Socket实例上。每个方法都提供了一个事件,以表示Socket的状态。
onmessage事件提供了一个data属性,它可以包含消息的Body部分。消息的Body部分必须是一个字符串,可以进行序列化/反序列化操作,以便传递更多的数据。
WebSocket的语法非常简单,使用WebSockets是难以置信的容易……除非客户端不支持WebSocket。IE浏览器目前不支持WebSocket通信。如果你的客户端不支持WebSocket通信,下面有几个后备方案供你使用:
原生服务端websocket
用 Node 实现简单 WebSocket 协议
安装
官网参考文档
服务端
客户端
客户端的JS文件,可以在CDN上得到
此时长连接后端有改动,前端就立即能接受新的值
发送公共信息
server
client
发送私有信息
server
client
获取socket.id,每个客户端都有一个对应的socket.id
然后通过下面方法实现单对单的私人聊天
客户端监听的事件
客户端
socket.on()
监听的事件:比如
客户端连接上服务端时候会触发回调函数
终止服务端时候客户端触发的回调函数
express配合websocket
参考文档
实时通讯之Socket.io
The text was updated successfully, but these errors were encountered: