微信小程序搭建服务器使用websocket通信,自己看的

原文章地址:
https://www.jianshu.com/p/54c079fa7a5c
服务器端
1.新建空文件
2.终端进入此文件
3.执行
在执行小程序端代码的时候必须在右上角的版本-详情设置里关闭非法域名检测

npm init -y
npm install websocket
npm install nodemo -g
nodemon socket.js

看到127.0.0.1:8080,,,,,搭建成功
4.微信小程序此目录下新建app.js文件
写入以下代码

const http = require('http')
const WebSocketServer = require('websocket').server

const httpServer = http.createServer((request, response) => {
    console.log('[' + new Date + '] Received request for ' + request.url)
    response.writeHead(404)
    response.end()
})

const wsServer = new WebSocketServer({
    httpServer,
    autoAcceptConnections: true
})

wsServer.on('connect', connection => {
    connection.on('message', message => {
        if (message.type === 'utf8') {
            console.log('>> message content from client: ' + message.utf8Data)
            connection.sendUTF('[from server] ' + message.utf8Data)
        }
    }).on('close', (reasonCode, description) => {
        console.log('[' + new Date() + '] Peer ' + connection.remoteAddress + ' disconnected.')
    })
})

httpServer.listen(8080, () => {
    console.log('[' + new Date() + '] Serveris listening on port 8080')
})

书上的版本:带等待连接自动回复

const http = require('http')
const { stdin, on } = require('process')
const WebSocketServer = require('websocket').server
const httpServer = http.createServer((request, response) => {
  response.writeHead(404)
  response.end()
})
const wsServer = new WebSocketServer({
  httpServer,
  autoAcceptConnections: true
})
wsServer.on('connect', connection => {
  connection.on('message', message => {
    console.log('>>message', message);
    if (message.type === 'utf8') {
      var data = {content : '自动回复', date: '2019-4-4'}
      connection.sendUTF(JSON.stringify(data))
    }
  })
  connection.on('close', (reasonCode, description) => {
    console.log('[' + new Date() + '] peer' + connection.remoteAddress + ' disconnected.')
  })
  process.stdin.on('data', function(data) {
    var data = data.toString().trim()
    data = {'content': data, 'date': '2010-01-01'}
    connection.sendUTF(JSON. stringify(data))
  })
})
httpServer.listen(8080, () => {
  console.log('[' + new Date() + ' server is listening on port 3000')
})

5.小程序端

Page({

  onLoad: function (options) {
    wx.connectSocket({
      url: 'ws://localhost:8080'
    })

    wx.onSocketOpen(function (res) {
      console.log('WebSocket连接已打开!')

      wx.sendSocketMessage({
        data: '爸爸,你好,我是你儿子杨志民',
      })
    })

    wx.onSocketMessage(function (res) {
      console.log(res)
    })

    wx.onSocketClose(function (res) {
      console.log('WebSocket连接已关闭!')
    })
  }

})
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值