建立静态页面,并将页面和 terminal 之间建立连线。
首先创建静态资料,结构如下:
切到 root 下的 server.js 改写部分内容,透过
use()
这个中介层来挂载刚刚建立的静态资料。
const express = require('express');
const http = require('http');
const PORT = 5000;
const app = express();
const server = http.createServer(app);
app.use(express.static('public'));
// when user go to the website return index.html
app.get('/', (req, res) => {
res.sendFile(`${__dirname}/public/index.html`);
});
const io = require('socket.io')(server);
server.listen(PORT, () => {
console.log(`Server listening on ${PORT}`);
});
现在开始着手处理 client 端
先在 client.js 埋下 console.log()
,并在 index.html 引入 client.js。
// client.js
console.log('this is client');
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Websocket</title>
</head>
<body>
<h3>This is Client Side.</h3>
<script src="./js/client.js"></script>
</body>
</html>
现在运行测试一下是否正常。
yarn dev
open localhost:5000
打开本地的浏览器,执行 http://localhost:5000/
,可以看到 index.html 的内容被渲染出来,同时打开 F12,也能查看到 client.js 的 console 内容,代表静态资料已被成功挂载到本地的 server 上。
现在需要将 client 端和 server 端进行串接,这里选择使用 cdn 的方式在 client 端引入。
切到 index.html 并贴上 script
<body>
<h3>This is Client Side.</h3>
//...
<script src="/socket.io/socket.io.js"></script>
<script src="./js/client.js"></script>
</body>
进到 client.js,写入以下内容
// listen client
const socket = io('/');
socket.on('connect', (server) => {
console.log(server)
console.log(`Client Successfully connected:${socket.id}`);
});
回到 server.js:
// listen & receive client connection
io.on('connection', (socket) => {
console.log(`Server:${socket.id}`);
});
上面这些动作是透过 socket.io,将前後两端进行连接,并透过 on ()
来监听。
现在执行 yarn dev
,打开 browser 输入 localhost:5000
,查看页面的 console 和 terminal,可以发现两端都拿到同一组 id,代表两者间已经建立起连线。如下图所示:
若我们在 HTML 页面进行重整,也可以看到连线进行刷新,重取新的 id。
<<: Day 16:「宝藏,都藏在那里了!」- Tailwind JIT 模式
>>: [Day2]安装VirtualBox及汇入Oracle 11gR2
一、自我介绍 & 参赛动机 本人目前该说是研究生呢,还是无业游民呢,反正因为一些私人因素,目...
变数的世界 在C#世界中,基本上大家都希望有自己的归属感,所以他们都会被赋予一个的种族, 这也是所谓...
对于运行 systemd 的系统 创建 systemd 服务管理文件,将以下示例中 ${seafil...
PHP常量 可以使用 const 关键字或 define() 函数两种方法来定义一个常量。函数 de...
起源 在某天,一个正在使用gitea的同事告诉我,gitea现在变得好慢喔。 我当下去看gitea的...