1. socket 介绍
Socket是网络编程中很重要的部分,是客户端和服务端之间建立连接的途径,Socket有两个部分,一个是服务端,一个是客户端,一般即时通信像聊天啊都会用到socket。它与http连接不同就是http就是所谓的短连接,及客户端向服务器发送一次请求,服务器端相应后连接即会断掉。socket连接及时所谓的长连接,理论上客户端和服务端一旦建立连接,则不会主动断掉
服务器端:
1)申请一个Socket
2)绑定到一个IP地址和一个端口上
3)开启监听,等待接受连接
客户端:
1)申请一个Socket
2)连接服务器(指明IP地址和端口号)
3)服务器端接到连接请求后,产生一个新的Socket(端口 大于1024)与客户端建立连接并进行通讯,原侦听Socket继续侦听
2. socket 在Vue的使用
- 安装
npm install socket.io-client --save
npm install vue-socket.io --save
2.使用
1)在页面引入
import socketio from 'socket.io-client'
2)在页面初始化时候创建一个socket连接将其挂载到vue this上 (ws://xxxx为要监听的服务端域名和端口)
created () {
this.socket = socketio('ws://localhost:5000/')
}
3)注册新的响应服务器事件的事件处理器
eventName(字符串)为服务端的事件名,callback回调函数为接收服务端的数据。
socket.on(eventName, callback)
例如:
this.socket.on('news', (data) => {
console.log(data);
});
4)通过提供的name时间名称向socket标志发送事件,任何其他的参数都可被包含,所有可被序列化的数据结构都支持,包括Buffer。
eventName (字符串),args,ack (Function)ack参数将用来响应服务器用来确认消息的应答。
socket.emit(eventName[, ...args][, ack])
例如:
socket.emit('ferret', 'tobi', (data) => {
console.log(data); // data will be 'woot'
});
5)手动关闭客户端对服务器的链接
socket.close()
- 手动打开socket
socket.open()
提示: 下面的事件是保留的,不应该在应用中用作事件名称:
error
connect
disconnect
disconnecting
newListener
removeListener
ping
pong