參考:
一 在微信小游戲 中使用socket.io報錯
因為項目需求,后端要使用nodejs簡單搭建一個服務器,通訊用json格式。
使用Egret提供的socket.io庫
https://github.com/egret-labs/egret-game-library
如果直接使用這個socket.io庫,在微信小游戲中會報錯。
例如io is not defined , socket.io.js中有用到document等等。於是網上找了找別人的解決方法。
二 適配微信小游戲的weapp.socket.io
1. 下載weapp.socket.io
https://github.com/weapp-socketio/weapp.socket.io
2. 配置weapp.socket.io
2.1 下載解壓后放在微信項目library下

2.2 在game.js中引入weapp.socket.io.js
在微信小游戲項目在找到game.js,並添加如下代碼
window.io = require("./library/weapp.socket.io.js");

2.3 在Egret項目任一.ts文件下定義一個全局io (我是定義在自己的Socket工具類ClientSocket.ts中)
declare let io: any; declare interface Window { io: any }
三 使用weapp.socket.io
3.1 本地搭建一個服務器 (具體nodejs如何搭建服務器這里就不寫了)
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.send('<h1>Welcome Realtime Server</h1>');
});
http.listen(3004, function(){
console.log('listening on *:3004');
});
io.on('connection', function(socket){
console.log('a user connected');
});
3.2 客戶端代碼
客戶端連接本地服務器127.0.0.1:3004,連接成功后輸出connect success。
let socket;
socket = io.connect("http://127.0.0.1:3004",{ reconnection: false,'force new connection': true});
socket.on('connect',function() {
egret.log("connect success");
});
微信開發者工具輸出success,表示連接成功

