-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathws-server.js
55 lines (49 loc) · 1.58 KB
/
ws-server.js
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*
* 服务器采用node.js进行搭建,使用ws库实现websocket功能
* */
'use strict'
//实例化WebSocketServer对象,监听8090端口
const WebSocketServer = require('ws').Server,
wss = new WebSocketServer({ port: 8090 })
//定义关键词词组
let wordArr = ['Monkey', 'Dog', 'Bear', 'Flower', 'Girl']
//监听连接事件,连接事件触发时,调用回调函数
wss.on('connection', function (ws) {
console.log('connected.')
//随机获取一个关键词
//"=>" 是function的简写形式,支持expression 和 statement 两种形式
let keyWord = ((arr) => {
let num = Math.floor(Math.random() * arr.length)
return arr[num]
})(wordArr)
//服务器接收客户端传来的消息
//判断消息内容是否与关键词相同
//同时向所有客户端派发消息
ws.on('message', function (message) {
console.log('received: %s', message)
if (message === keyWord) {
console.log('correct')
wss.clients.forEach((client) => {
client.send('答对了!!')
})
} else if (message === 'clear' || message === 'stop') {
console.log(message)
wss.clients.forEach((client) => {
client.send(message)
})
} else if (message.indexOf('.') !== -1) {
wss.clients.forEach((client) => {
client.send(message)
})
} else {
console.log('wrong')
wss.clients.forEach((client) => {
client.send('答错了!!')
})
}
})
//服务器初始化时向所有客户端提供一个关键词
wss.clients.forEach((client) => {
client.send('keyword:' + keyWord)
})
})