scratch3-adapter支持第三方平台

开放连接

我们在上周发布了codelab-adapter的0.4.0版本, 在这个版本中,我们做了大量重构,采用了许多realtalk的架构思路。

从这个版本开始,我们将允许codelab.club的合作方将codelab-adapter接入到自己的平台。从而让平台获得与开源硬件/AI/IoT交互的能力,同时他们也可以将codelab-adapter用作真实的Python解释器(可以与本地文件系统/网络交互)。

本周末,我们将在这篇文章中展示如何将codelab-adapter接入到任何Scratch3.0平台中。事实上,你可以将它接入任何平台中。

在本文中我们将放出EIM相关的所有源代码: scratch3_eim extension的源代码以及scratch3-adapter extension_eim的源代码。

教程

我们假设你已经读了创建你的第一个Scratch3.0 Extension,如果没有,阅读完再回来。最好跟着文章操作一遍。

在Scratch3.0中创建EIM Extension

Scratch3.0插件源码

scratch-vm/src/extensions目录创建scratch3_eim/index.js

Scratch3.0 eim插件的源码我们已经放到Github上了:scratch3_eim,源码本身不做过多解释,对照着它的功能,很容易搞懂。

值得注意的是,scratch3_eim依赖于socket.io-client, 你需要在scratch-vm中先按照依赖:yarn add socket.io-client

Scratch3.0与scratch3-adapter建立连接,最关键的部分是:

this.socket = io(`//${adapterHost}:12358` + '/test', {
    transports: ['websocket']
});

从架构图中,你可以更好地理解它们的交互:

从架构途图中也可以看出,scratch3-adapter支持任何平台。Scratch3.0只是它的一个client,但并没有特殊性,你完全可以在blockly app或者任何其他什么地方接入scratch3-adapter

scratch3-adapter extension_eim源码

scratch3-adapter extension_eim的源码,我们也已经更新到Github上: extension_eim.py

此外,extension_python_kernel.py也是与Scratch3.0 eim插件配合使用的.

开发者优先

目前我们允许开发者在本地(127.0.0.1)将scratch3-adapter接入到任何平台中。

需要注意的是,你需要将网站运行为安全模式(https)来与scratch3-adapter通信。

scratch3-adapter目前接受以下http origin与它通信:

  • 127.0.0.1
  • localhost
  • 0.0.0.0
  • scratch.mit.edu
  • scratch3.codelab.club

第三方平台接入的条款我们正在制定中。目前大家可以现在本地测试。

scratch3-adapter可以支持其他平台吗?

如果有公司和组织希望将scratch3-adapter接入到自己的平台,请阅读scratch3-adapter可以支持其他平台吗?

参考




Fork me on GitHub