-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
35 lines (30 loc) · 1007 Bytes
/
server.js
File metadata and controls
35 lines (30 loc) · 1007 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
require('@babel/register')({
presets: ['@babel/preset-env', '@babel/preset-react'],
plugins: ['@babel/plugin-transform-runtime']
})
const WebSocket = require('ws')
const { resolve } = require('path')
const { createElement } = require('react')
const { serializeReactElement, Tags } = require('./lib')
const wss = new WebSocket.Server({
port: 3000,
clientTracking: false,
})
wss.on('connection', socket => {
socket.on('message', async message => {
try {
const { path, props } = JSON.parse(message)
let Component = require(resolve(__dirname, 'example', path)).default
if (Component.isAsync) {
Component = await Component(props)
}
const element = createElement(Component, props, Tags.CHILDREN)
socket.send(JSON.stringify({
path,
element: serializeReactElement(element)
}))
} catch (err) {
console.log(err)
}
})
})