Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wechaty
wechaty
提交
832bfa40
W
wechaty
项目概览
wechaty
/
wechaty
上一次同步 大约 3 年
通知
304
Star
10499
Fork
6
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
152
列表
看板
标记
里程碑
合并请求
1
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
W
wechaty
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
152
Issue
152
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
832bfa40
编写于
5月 08, 2016
作者:
Huan (李卓桓)
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
start with message...
上级
fb02f7c3
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
92 addition
and
39 deletion
+92
-39
lib/message.js
lib/message.js
+12
-3
lib/puppet-web-server.js
lib/puppet-web-server.js
+1
-6
lib/puppet-web.js
lib/puppet-web.js
+1
-5
lib/puppet.js
lib/puppet.js
+6
-1
tests/puppet-web-server-tests.js
tests/puppet-web-server-tests.js
+72
-24
未找到文件。
lib/message.js
浏览文件 @
832bfa40
...
...
@@ -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
.
To
UserName
:
null
,
group
:
rawObj
.
MMIsChatRoom
?
rawObj
.
From
UserName
:
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
'
})
}
...
...
lib/puppet-web-server.js
浏览文件 @
832bfa40
...
...
@@ -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
)
{
...
...
lib/puppet-web.js
浏览文件 @
832bfa40
...
...
@@ -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
)
{
...
...
lib/puppet.js
浏览文件 @
832bfa40
...
...
@@ -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
tests/puppet-web-server-tests.js
浏览文件 @
832bfa40
...
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录