javascript - 如何在 vanilla javascript 中从客户端导入 socket.io?

标签 javascript node.js socket.io

socket.io 的官方文档有一个从客户端导入和使用 socket.io 的示例,如下所示:

index.html

<body>
  <script src="/socket.io/socket.io.js"></script>
  <script src="https://code.jquery.com/jquery-1.11.1.js"></script>
  <script>
    $(function () {
      var socket = io();
      // Some other code in here...
    });
  </script>
</body>

现在我试图将我的 js 代码放在 main.js 文件中(在 public 中的 index.html 旁边) 文件夹)。这就是我所做的,它给了我 Unexpected identifier:

ma​​in.js

import io from "../socket.io/socket.io.js"
const socket = io()
// Some other code here...

在这种情况下,导入 socket.io 的正确形式是什么?

最佳答案

方法有很多种,最简单的一种:

您可以只使用socket.io-client CDN或从 dist 文件夹提供服务 socket.io-client github repository .它会将 io 对象添加到 window。 这基本上意味着 io 将是一个您可以使用的全局变量。

您需要使用 script 标签将它添加到您的 html 页面。

您可以将其用作:

<script src="/socket.io/socket.io.js"></script>
<script type="text/javascript">
    var socket = io('http://localhost');
      socket.on('news', function (data) {
        console.log(data);
        socket.emit('my other event', { my: 'data' });
    });
</script>

或者,您可以使用 webpackbrowserify 构建 JS 文件并将其导入您的 index.html。您可以查看示例 here

为什么 import 不起作用?

因为 import 是一个 ES6 运算符。开箱即用的浏览器不支持它。哎呀,连 node 都不支持 importexport。这就是为什么您需要将它们转译(转换)为 ES5 语法,以便浏览器也可以运行它。可以看看靠谱的Babel REPL并自己将 Es6 转换为 Es5 以获得感觉。

关于javascript - 如何在 vanilla javascript 中从客户端导入 socket.io?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56707417/

相关文章:

javascript - 文本字段错误地与 mobiscroll 一起显示

javascript - 为什么当我从浏览器修改 html/js 时多次发送 ajax 请求

node.js - MongoClient Node 游标流和数据管道

javascript - 使用jQuery点击处理 anchor onClick()

JavaScript 日期和时间显示错误

javascript - 导致循环依赖的子实例

node.js oracledb 不插入也不更新

php - 我基于 PHP 的网站上的 Node.JS 通知

amazon-web-services - AWS EB : Error during WebSocket handshake: Unexpected response code: 400

node.js - Socket.io、安全和多人游戏