原文章地址:
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连接已关闭!')
})
}
})