提交 832bfa40 编写于 作者: Huan (李卓桓)'s avatar Huan (李卓桓)

start with message...

上级 fb02f7c3
......@@ -7,15 +7,15 @@ class Message {
// Transform rawObj to local m
this.m = {
id: rawObj.MsgId
, from: rawObj.FromUserName
, type: rawObj.MsgType
, content: rawObj.Content
, from: rawObj.MMActualSender
, content: rawObj.MMActualContent
, status: rawObj.Status
, digest: rawObj.MMDigest
, to: rawObj.MMPeerUserName
, actual_content: rawObj.MMActualContent
, group: rawObj.MMIsChatRoom ? rawObj.ToUserName : null
, group: rawObj.MMIsChatRoom ? rawObj.FromUserName : null
, date: new Date(rawObj.MMDisplayTime*1000)
}
}
......@@ -28,6 +28,15 @@ class Message {
return this.m[prop]
}
dump() {
console.log('======= dump message =======')
Object.keys(this.m).forEach(k => console.log(`${k}: ${this.m[k]}`))
}
dumpRaw() {
console.log('======= dump raw message =======')
Object.keys(this.rawObj).forEach(k => console.log(`${k}: ${this.rawObj[k]}`))
}
static find(selector, option) {
return new Message({MsgId: '-1'})
}
......
......@@ -138,7 +138,6 @@ class Server extends EventEmitter {
, 'login'
, 'logout'
, 'unload'
, 'zixia'
]
events.map(e => {
s.on(e, data => {
......@@ -147,10 +146,6 @@ class Server extends EventEmitter {
})
})
s.on('dong', data => {
console.log(`recv event[dong] from browser:` + data)
})
/**
* prevent lost event: buffer new event received when socket disconnected
while (buff.length) {
......@@ -178,7 +173,7 @@ class Server extends EventEmitter {
delete this.socketServer
}
if (this.socketClient) {
this.socketClient.disconnect(0)
this.socketClient.disconnect()
delete this.socketClient
}
if (this.server) {
......
......@@ -38,11 +38,7 @@ class PuppetWeb extends Puppet {
this.server.on(event, data => this.emit(event, data) )
)
const p = new Promise((resolve, reject) => {
this.server.init(this.port)
})
return p
return this.server.init(this.port)
}
send(message) {
......
......@@ -49,5 +49,10 @@ class Puppet extends EventEmitter {
}
module.exports = Puppet
Object.assign(Puppet, {
Message: require('./message')
, Contact: require('./contact')
, Group: require('./group')
})
module.exports = Puppet
......@@ -40,39 +40,87 @@ test('Server smoking tests', function (t) {
server.init()
.then(() => {
t.ok(true, 'server:' + PORT + ' inited')
const options = require('url').parse(`https://localhost:${PORT}/ding`)
options.rejectUnauthorized = false // permit self-signed CA
https.get(options, (res) => {
t.pass('https server inited')
Promise.all([
dingHttps() // retHttps
, dingSocket() // retSocket
, dingBrowser() // retBrowser
, dingProxy() // retProxy
, getLoginStatusCode() // retStatus
]).then(([
retHttps
, retSocket
, retBrowser
, retProxy
, retStatus
]) => {
t.equal(retHttps , 'dong', 'ding https got dong')
t.equal(retSocket, 'dong', 'ding socket got dong')
t.equal(retBrowser, 'dong', 'ding browser got dong')
t.equal(retProxy, 'dong', 'ding proxy got dong')
t.equal(typeof retStatus, 'number', 'status is number')
t.end() + server.quit()
}).catch(e => {
t.fail('ding promise rejected:' + e)
t.end() + server.quit()
})
res.on('data', chunk => {
t.equal(chunk.toString(), 'dong', 'https get /ding return dong')
function dingHttps() {
const options = require('url').parse(`https://localhost:${PORT}/ding`)
options.rejectUnauthorized = false // permit self-signed CA
return new Promise((resolve, reject) => {
https.get(options, res => {
res.on('data', chunk => {
console.log('https on data got: ' + chunk.toString())
resolve(chunk.toString())
})
}).on('error', e => reject('https get error:' + e))
})
}).on('error', e => {
t.fail('https get error:' + e)
})
}
function testDing() {
if (!server.socketClient) {
console.error('waiting socketClient to connect for 500ms...')
setTimeout(testDing, 500)
return
}
server.socketClient.on('dong', (data) => {
t.equal(data, 'dong', 'socket io sent ding got dong')
server.quit()
t.end()
function dingSocket() {
const maxTime = 3000
const waitTime = 500
let totalTime = 0
return new Promise((resolve, reject) => {
setTimeout(testDing, waitTime)
function testDing() {
if (!server.socketClient) {
totalTime += waitTime
if (totalTime > maxTime)
return reject('timeout after ' + totalTime + 'ms');
console.error('waiting socketClient to connect for ' + totalTime + '/' + maxTime + ' ms...')
setTimeout(testDing, waitTime)
return
}
server.socketClient.on ('dong', data => {
console.log('socket on dong got: ' + data)
resolve(data)
})
server.socketClient.emit('ding')
}
})
server.socketClient.emit('ding')
}
testDing()
function dingBrowser() {
return server.browserExecute('return Wechaty.ding()')
}
function dingProxy() {
return server.proxyWechaty('ding')
}
function getLoginStatusCode() {
return server.Wechaty_getLoginStatusCode()
}
}).catch((e) => {
t.fail('server init promise rejected:' + e)
})
console.error('here')
})
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册