Cocos Creator 3.x Socket.io

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');
});

运行跑起来:

 

工程链接

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坎大哈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值