WebSocket 前端实时消息对接 (微信小程序、后台)

一、微信小程序

我这个是最简易版本的 ,具体消息需要什么格式及样式还需要自己添加(基础使用)

import config from '@/config'
const url = config.socketUrl + config.baseApi  // 后端告诉的地址 
// 一般格式为:ws://192.xxx.xx.xx/xxx

export function createWebSocket(id) {
	//建立websocket连接
	wx.connectSocket({
		//下面的url纯属假的,真实的需要自己去加
		url: url + '/websocket/' + id,
	})

	//连接成功
	wx.onSocketOpen(function() {
		wx.sendSocketMessage({
			data: 'stock',
		}) // 发送了一条消息
	})

	//连接失败
	wx.onSocketError(function() {
		console.log('websocket连接失败!');
	})
	//接收数据
	wx.onSocketMessage(function(data) {
		console.log(data.data);
		uni.showModal({
			content: data.data,
			showCancel: false
		}) // 收到消息显示出来

	})
}
export function closeWebSocket() {

	//断开连接
	wx.onSocketClose(function(res) {
		console.log('WebSocket 已关闭!')
	})
}
export default {
	createWebSocket,
	closeWebSocket
}

二、后台(pc端)

 js文件

const url = process.env.VUE_APP_SOCKET_URL +'/pasture-service/websocket/'
import { Notification} from 'element-ui' // 用了elementui 的消息提示
export function createWebSocket(id) {

    let websocket = null;
    //建立websocket连接
    if ('WebSocket' in window) {
        //连接WebSocket节点
        websocket = new WebSocket(url + id);
    } else {
        alert('浏览器不支持webSocket');
    }

    //连接发生错误的回调方法
    websocket.onerror = function () {
        // setMessageInnerHTML("error");
    };

    //连接成功建立的回调方法
    websocket.onopen = function (event) {
        // setMessageInnerHTML("open");
    };

    //接收到消息的回调方法
    websocket.onmessage = function (event) {
        let data = event.data;
        console.log("后端传递的数据:" + data);

        Notification.info({
            title: '您有一条新的消息',
            message: data
        })

        //将后端传递的数据渲染至页面
        // $("#online").html(data);
    };

    //连接关闭的回调方法
    websocket.onclose = function () {
        // setMessageInnerHTML("close");
    };

    //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
    window.onbeforeunload = function () {
        websocket.close();
    };

}

export default {
    createWebSocket
}

使用:  先引用该js文件,再通过 createWebSocket(id)  去使用!

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
小程序中使用 WebSocket 实现实时聊天的步骤如下: 1. 在小程序 app.json 文件中添加网络权限: ```json { "permission": { "scope.userLocation": { "desc": "获取用户地理位置信息" }, "scope.record": { "desc": "录音功能,用于发送语音消息" }, "scope.writePhotosAlbum": { "desc": "保存到相册功能,用于保存聊天图片" }, "scope.userInfo": { "desc": "获取用户信息,用于显示聊天用户头像和昵称" }, "scope.websocket": { "desc": "使用 WebSocket,用于实现实时聊天" } } } ``` 2. 在小程序页面中创建 WebSocket 连接: ```javascript // 建立连接 let socketTask = wx.connectSocket({ url: 'wss://your.websocket.url', success() { console.log('WebSocket 连接成功') }, fail() { console.log('WebSocket 连接失败') } }) // 监听 WebSocket 连接状态变化 socketTask.onOpen(() => { console.log('WebSocket连接') }) socketTask.onError(() => { console.log('WebSocket 连接错误') }) socketTask.onClose(() => { console.log('WebSocket 已关闭') }) ``` 3. 发送和接收消息: ```javascript // 发送消息 socketTask.send({ data: 'Hello, WebSocket!', success() { console.log('消息发送成功') }, fail() { console.log('消息发送失败') } }) // 接收消息 socketTask.onMessage((res) => { console.log('接收到消息:', res.data) }) ``` 完整的实时聊天代码示例: ```javascript Page({ data: { messages: [] // 聊天消息列表 }, onLoad: function() { // 建立连接 let socketTask = wx.connectSocket({ url: 'wss://your.websocket.url', success() { console.log('WebSocket 连接成功') }, fail() { console.log('WebSocket 连接失败') } }) // 监听 WebSocket 连接状态变化 socketTask.onOpen(() => { console.log('WebSocket连接') }) socketTask.onError(() => { console.log('WebSocket 连接错误') }) socketTask.onClose(() => { console.log('WebSocket 已关闭') }) // 接收消息 socketTask.onMessage((res) => { console.log('接收到消息:', res.data) let message = JSON.parse(res.data) let messages = this.data.messages messages.push(message) this.setData({ messages: messages }) }) }, // 发送消息 sendMessage: function(event) { let message = event.detail.value if (message) { let socketTask = wx.connectSocket({ url: 'wss://your.websocket.url' }) socketTask.send({ data: message, success() { console.log('消息发送成功') }, fail() { console.log('消息发送失败') } }) this.setData({ inputMessage: '' }) } } }) ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值