TS使用socket.io(1.44、1.4.8版)总结

请原谅第一天使用TS的菜鸟啰嗦了!希望对绝望中烦恼中的潭友有帮助。。。

之前js下使用了socket.io,是1.4.4版本的,由潭里的linhaiwei123《[CocosCreator + socketIO简易教程(更新至1.0)]》版本开发的。

近期想使用TS,将之前的代码重用,发现不会用TS,在群里搜索了半天,有人说要写d.ts,最后潭里@toddlxt提供了一个,正好是1.4.4版本的《socket.io.ts文件哪里有啊》,于是又折腾了半天不知道js和d.ts如何使用,烦恼啊,作为程序员!最后搜了半天,把两者放在一起了,又不知道怎么引入,主要是import {xx1} from ‘xx2’;,反正xx这两个位置傻傻分不清楚试了N次,结果发现下载的socket.io版本是2.1.0的,和d.ts的1.4.4不匹配,于是使用以下命令下了一个对应版本的:

npm install -save socket.io@1.4.4
快捷下载地址:https://cdnjs.com/libraries/socket.io

然后又发现什么还是在xx位置搞了很久——程序员就是有耐心!最后确定为:

import {connect} from './socket.io.1.4.8';

一、服务器端
#socket.io从2.X一直测试到1.4.8版本可以,1.4.8以上拖进creator立马报各种花样的错误
npm install --save socket.io@1.4.8
npm install --save express
node server.js

#server.js
var exp = require('express');
var app = exp();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.use(exp.static('/public'));

io.on('connection', function(socket){
    console.log('a user ' + socket.id);
    socket.emit('connected', 'hello cocos! 你好,世界!');
});

http.listen(8000,function(){
    console.log('listening on 8000');
})

二、客户端
1、把下载的socket.io及d.ts文件拷贝的script目录
2、修改Helloworld.ts源码
# Helloworld.ts
const {ccclass, property} = cc._decorator;
import {connect} from ‘./socket.io.1.4.8’;

@ccclass
export default class Helloworld extends cc.Component {

    @property(cc.Label)
    label: cc.Label = null;

    start () {
        let self = this;
        var socket = null;
        
        if(!cc.sys.isNative) {
            socket = connect('http://192.168.31.246:8000');
            socket.on('connected', function(msg){
                self.label.string = "web调试:" + msg;
                console.log("返回信息-------------" + msg);
            });
        }
        else {
            socket = io.connect('http://192.168.31.246:8000');
            socket.on('connected', function(msg){
                self.label.string = "安卓调试:" + msg;
                console.log("返回信息-------------" + msg);
            });
        }

    }
}

工程包(基于creator2.0.5版):tssk.zip (1.7 MB)

2赞

mark

楼主。连接手机测试的哪个io.connect()方法的io报错了,访问不到。