Cocos Creator 3.x 中使用 Socket.io 的使用:
使用 npm 的方式引入 Cocos Creator 工程:
npm 官方文档https://docs.cocos.com/creator/manual/zh/scripting/modules/config.html?h=npm
在 Cocos Creator 工程 根目录运行:
npm install socket.io-client
node_modules 文件夹中就会自动安装好了;
Cocos Creator编写 脚本:
Connection.ts
import { _decorator, Component, Node } from 'cc'; // import { io } from 'socket.io-client'; import io from 'socket.io-client/dist/socket.io.js'; const { ccclass, property } = _decorator; @ccclass('Connection') export class Connection extends Component { start() { console.log("Starting connection to socket.io server"); let socket = io("http://localhost:3000", { withCredentials: true, extraHeaders: { "my-custom-header": "abcd" }, transports: ['websocket', 'polling', 'flashsocket'] }); console.log(socket.connected); // socket是否与服务器连接 console.log(socket.disconnected); // socket是否与服务器断开连接 // client-side socket.on("connect", () => { console.log(`Socket.ID: ${socket.id}`); // x8WIv7-mJelg7on_ALbx socket.emit('chat message', '我是菜鸟'); }); socket.on("disconnect", (reason: any) => { console.log(socket.connected); console.log("断开连接-disconnect", reason); }) socket.on("error", (err: any) => { console.log("错误-error", err); }) // 连接错误 socket.on("connect_error", (err: any) => { console.log("连接错误-connect_error:", err); }); // 连接超时 socket.on("connect_timeout", (data: any) => { console.log("连接超时-connect_timeout", data); }); socket.on("chat message", (data: any) => { console.log("chat message", data); }); } }
随便挂在 node 节点上面!
编写一段 server 脚本
采用 nodejs 编写:
参照官方文档https://socket.io/get-started/chat
const express = require('express'); const app = express(); const http = require('http'); const server = http.createServer(app); const { Server } = require("socket.io"); const io = new Server(server); app.get('/', (req, res) => { res.sendFile(__dirname + '/index.html'); }); io.on('connection', (socket) => { socket.broadcast.emit('hi'); console.log('a user connected'); socket.on('chat message', (msg) => { console.log('message: ' + msg); io.emit('chat message', 'server'+msg); }); }); server.listen(3000, () => { console.log('listening on *:3000'); io.emit('login', '欢迎欢迎1'); });
运行跑起来: