node.js,Vue实现简单socket聊天

1. socket 介绍

Socket是网络编程中很重要的部分,是客户端和服务端之间建立连接的途径,Socket有两个部分,一个是服务端,一个是客户端,一般即时通信像聊天啊都会用到socket。它与http连接不同就是http就是所谓的短连接,及客户端向服务器发送一次请求,服务器端相应后连接即会断掉。socket连接及时所谓的长连接,理论上客户端和服务端一旦建立连接,则不会主动断掉
服务器端:
1)申请一个Socket
2)绑定到一个IP地址和一个端口上
3)开启监听,等待接受连接
客户端:
1)申请一个Socket
2)连接服务器(指明IP地址和端口号)
3)服务器端接到连接请求后,产生一个新的Socket(端口 大于1024)与客户端建立连接并进行通讯,原侦听Socket继续侦听

2. socket 在Vue的使用

  1. 安装
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()
  1. 手动打开socket
socket.open()

提示: 下面的事件是保留的,不应该在应用中用作事件名称:

error
connect
disconnect
disconnecting
newListener
removeListener
ping
pong

preview

github Vue
github node

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.jsNode.js 可以一起实现消息推送的功能。下面是一种简单实现方式: 1. 在 Vue.js 中,使用 WebSocket 进行实时通信。可以使用 `vue-native-websocket` 或 `vue-socket.io` 等库来简化开发。 2. 在 Node.js 中,使用 `socket.io` 库来处理 WebSocket 的连接和消息推送。 下面是一个简单的示例代码: 在 Vue.js 中: ```javascript // 安装 vue-native-websocket npm install vue-native-websocket import VueNativeSock from 'vue-native-websocket'; Vue.use(VueNativeSock, 'ws://localhost:3000', { reconnection: true, reconnectionAttempts: 5, reconnectionDelay: 3000, }); new Vue({ // ... }); ``` 在 Node.js 中: ```javascript // 安装 socket.io npm install socket.io const express = require('express'); const http = require('http'); const socketIO = require('socket.io'); const app = express(); const server = http.Server(app); const io = socketIO(server); io.on('connection', (socket) => { console.log('A client connected'); // 接收客户端发送的消息 socket.on('message', (data) => { console.log('Received message:', data); // 广播消息给所有连接的客户端 io.emit('message', data); }); // 客户端断开连接 socket.on('disconnect', () => { console.log('A client disconnected'); }); }); server.listen(3000, () => { console.log('Server listening on port 3000'); }); ``` 以上代码实现了一个简单的消息推送功能。当客户端连接到服务器后,可以发送消息,并且服务器会将消息广播给所有连接的客户端。 需要注意的是,这只是一个简单的示例,实际应用中可能需要添加身份验证、权限控制等功能来保证安全性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值