Commit 139942f5 authored by AlexStocks's avatar AlexStocks

bugfix: delete readdeadline for websocket connections

parent 6133edd0
...@@ -54,7 +54,7 @@ const ( ...@@ -54,7 +54,7 @@ const (
) )
var ( var (
ErrNotEnoughSteam = errors.New("packet stream is not enough") ErrNotEnoughStream = errors.New("packet stream is not enough")
ErrTooLargePackage = errors.New("package length is exceed the echo package's legal maximum length.") ErrTooLargePackage = errors.New("package length is exceed the echo package's legal maximum length.")
ErrIllegalMagic = errors.New("package magic is not right.") ErrIllegalMagic = errors.New("package magic is not right.")
) )
...@@ -116,7 +116,7 @@ func (this *EchoPackage) Unmarshal(buf *bytes.Buffer) (int, error) { ...@@ -116,7 +116,7 @@ func (this *EchoPackage) Unmarshal(buf *bytes.Buffer) (int, error) {
) )
if buf.Len() < echoPkgHeaderLen { if buf.Len() < echoPkgHeaderLen {
return 0, ErrNotEnoughSteam return 0, ErrNotEnoughStream
} }
// header // header
...@@ -129,7 +129,7 @@ func (this *EchoPackage) Unmarshal(buf *bytes.Buffer) (int, error) { ...@@ -129,7 +129,7 @@ func (this *EchoPackage) Unmarshal(buf *bytes.Buffer) (int, error) {
return 0, ErrIllegalMagic return 0, ErrIllegalMagic
} }
if buf.Len() < (int)(this.H.Len) { if buf.Len() < (int)(this.H.Len) {
return 0, ErrNotEnoughSteam return 0, ErrNotEnoughStream
} }
if maxEchoStringLen < this.H.Len-1 { if maxEchoStringLen < this.H.Len-1 {
return 0, ErrTooLargePackage return 0, ErrTooLargePackage
......
...@@ -93,8 +93,8 @@ func newSession(session getty.Session) error { ...@@ -93,8 +93,8 @@ func newSession(session getty.Session) error {
session.SetEventListener(newEchoMessageHandler()) session.SetEventListener(newEchoMessageHandler())
session.SetRQLen(conf.GettySessionParam.PkgRQSize) session.SetRQLen(conf.GettySessionParam.PkgRQSize)
session.SetWQLen(conf.GettySessionParam.PkgWQSize) session.SetWQLen(conf.GettySessionParam.PkgWQSize)
session.SetReadDeadline(conf.GettySessionParam.tcpReadTimeout) session.SetReadTimeout(conf.GettySessionParam.tcpReadTimeout)
session.SetWriteDeadline(conf.GettySessionParam.tcpWriteTimeout) session.SetWriteTimeout(conf.GettySessionParam.tcpWriteTimeout)
session.SetCronPeriod((int)(conf.heartbeatPeriod.Nanoseconds() / 1e6)) session.SetCronPeriod((int)(conf.heartbeatPeriod.Nanoseconds() / 1e6))
session.SetWaitTime(conf.GettySessionParam.waitTimeout) session.SetWaitTime(conf.GettySessionParam.waitTimeout)
log.Debug("client new session:%s\n", session.Stat()) log.Debug("client new session:%s\n", session.Stat())
......
...@@ -38,7 +38,7 @@ func (this *EchoPackageHandler) Read(ss getty.Session, data []byte) (interface{} ...@@ -38,7 +38,7 @@ func (this *EchoPackageHandler) Read(ss getty.Session, data []byte) (interface{}
buf = bytes.NewBuffer(data) buf = bytes.NewBuffer(data)
len, err = pkg.Unmarshal(buf) len, err = pkg.Unmarshal(buf)
if err != nil { if err != nil {
if err == ErrNotEnoughSteam { if err == ErrNotEnoughStream {
return nil, 0, nil return nil, 0, nil
} }
......
...@@ -10,5 +10,5 @@ ...@@ -10,5 +10,5 @@
package main package main
var ( var (
Version = "0.8.01" Version = "0.8.1"
) )
...@@ -54,7 +54,7 @@ const ( ...@@ -54,7 +54,7 @@ const (
) )
var ( var (
ErrNotEnoughSteam = errors.New("packet stream is not enough") ErrNotEnoughStream = errors.New("packet stream is not enough")
ErrTooLargePackage = errors.New("package length is exceed the echo package's legal maximum length.") ErrTooLargePackage = errors.New("package length is exceed the echo package's legal maximum length.")
ErrIllegalMagic = errors.New("package magic is not right.") ErrIllegalMagic = errors.New("package magic is not right.")
) )
...@@ -116,7 +116,7 @@ func (this *EchoPackage) Unmarshal(buf *bytes.Buffer) (int, error) { ...@@ -116,7 +116,7 @@ func (this *EchoPackage) Unmarshal(buf *bytes.Buffer) (int, error) {
) )
if buf.Len() < echoPkgHeaderLen { if buf.Len() < echoPkgHeaderLen {
return 0, ErrNotEnoughSteam return 0, ErrNotEnoughStream
} }
// header // header
...@@ -129,7 +129,7 @@ func (this *EchoPackage) Unmarshal(buf *bytes.Buffer) (int, error) { ...@@ -129,7 +129,7 @@ func (this *EchoPackage) Unmarshal(buf *bytes.Buffer) (int, error) {
return 0, ErrIllegalMagic return 0, ErrIllegalMagic
} }
if buf.Len() < (int)(this.H.Len) { if buf.Len() < (int)(this.H.Len) {
return 0, ErrNotEnoughSteam return 0, ErrNotEnoughStream
} }
// 防止恶意客户端把这个字段设置过大导致服务端死等或者服务端在准备对应的缓冲区时内存崩溃 // 防止恶意客户端把这个字段设置过大导致服务端死等或者服务端在准备对应的缓冲区时内存崩溃
if maxEchoStringLen < this.H.Len-1 { if maxEchoStringLen < this.H.Len-1 {
......
...@@ -38,7 +38,7 @@ func (this *EchoPackageHandler) Read(ss getty.Session, data []byte) (interface{} ...@@ -38,7 +38,7 @@ func (this *EchoPackageHandler) Read(ss getty.Session, data []byte) (interface{}
buf = bytes.NewBuffer(data) buf = bytes.NewBuffer(data)
len, err = pkg.Unmarshal(buf) len, err = pkg.Unmarshal(buf)
if err != nil { if err != nil {
if err == ErrNotEnoughSteam { if err == ErrNotEnoughStream {
return nil, 0, nil return nil, 0, nil
} }
......
...@@ -98,8 +98,8 @@ func newSession(session getty.Session) error { ...@@ -98,8 +98,8 @@ func newSession(session getty.Session) error {
session.SetEventListener(newEchoMessageHandler()) session.SetEventListener(newEchoMessageHandler())
session.SetRQLen(conf.GettySessionParam.PkgRQSize) session.SetRQLen(conf.GettySessionParam.PkgRQSize)
session.SetWQLen(conf.GettySessionParam.PkgWQSize) session.SetWQLen(conf.GettySessionParam.PkgWQSize)
session.SetReadDeadline(conf.GettySessionParam.tcpReadTimeout) session.SetReadTimeout(conf.GettySessionParam.tcpReadTimeout)
session.SetWriteDeadline(conf.GettySessionParam.tcpWriteTimeout) session.SetWriteTimeout(conf.GettySessionParam.tcpWriteTimeout)
session.SetCronPeriod((int)(conf.sessionTimeout.Nanoseconds() / 1e6)) session.SetCronPeriod((int)(conf.sessionTimeout.Nanoseconds() / 1e6))
session.SetWaitTime(conf.GettySessionParam.waitTimeout) session.SetWaitTime(conf.GettySessionParam.waitTimeout)
log.Debug("app accepts new session:%s\n", session.Stat()) log.Debug("app accepts new session:%s\n", session.Stat())
......
...@@ -10,5 +10,5 @@ ...@@ -10,5 +10,5 @@
package main package main
var ( var (
Version = "0.8.01" Version = "0.8.1"
) )
...@@ -10,6 +10,10 @@ ...@@ -10,6 +10,10 @@
## develop history ## ## develop history ##
--- ---
- 2018/03/09
> improvement
* use getty 0.8.1
- 2017/04/27 - 2017/04/27
> improvement > improvement
* enable wss client just using cert file; * enable wss client just using cert file;
......
...@@ -49,7 +49,7 @@ const ( ...@@ -49,7 +49,7 @@ const (
) )
var ( var (
ErrNotEnoughSteam = errors.New("packet stream is not enough") ErrNotEnoughStream = errors.New("packet stream is not enough")
ErrTooLargePackage = errors.New("package length is exceed the echo package's legal maximum length.") ErrTooLargePackage = errors.New("package length is exceed the echo package's legal maximum length.")
ErrIllegalMagic = errors.New("package magic is not right.") ErrIllegalMagic = errors.New("package magic is not right.")
) )
...@@ -111,7 +111,7 @@ func (this *EchoPackage) Unmarshal(buf *bytes.Buffer) (int, error) { ...@@ -111,7 +111,7 @@ func (this *EchoPackage) Unmarshal(buf *bytes.Buffer) (int, error) {
) )
if buf.Len() < echoPkgHeaderLen { if buf.Len() < echoPkgHeaderLen {
return 0, ErrNotEnoughSteam return 0, ErrNotEnoughStream
} }
// header // header
...@@ -124,7 +124,7 @@ func (this *EchoPackage) Unmarshal(buf *bytes.Buffer) (int, error) { ...@@ -124,7 +124,7 @@ func (this *EchoPackage) Unmarshal(buf *bytes.Buffer) (int, error) {
return 0, ErrIllegalMagic return 0, ErrIllegalMagic
} }
if buf.Len() < (int)(this.H.Len) { if buf.Len() < (int)(this.H.Len) {
return 0, ErrNotEnoughSteam return 0, ErrNotEnoughStream
} }
if maxEchoStringLen < this.H.Len-1 { if maxEchoStringLen < this.H.Len-1 {
return 0, ErrTooLargePackage return 0, ErrTooLargePackage
......
...@@ -101,8 +101,8 @@ func newSession(session getty.Session) error { ...@@ -101,8 +101,8 @@ func newSession(session getty.Session) error {
session.SetEventListener(newEchoMessageHandler()) session.SetEventListener(newEchoMessageHandler())
session.SetRQLen(conf.GettySessionParam.PkgRQSize) session.SetRQLen(conf.GettySessionParam.PkgRQSize)
session.SetWQLen(conf.GettySessionParam.PkgWQSize) session.SetWQLen(conf.GettySessionParam.PkgWQSize)
session.SetReadDeadline(conf.GettySessionParam.tcpReadTimeout) session.SetReadTimeout(conf.GettySessionParam.tcpReadTimeout)
session.SetWriteDeadline(conf.GettySessionParam.tcpWriteTimeout) session.SetWriteTimeout(conf.GettySessionParam.tcpWriteTimeout)
session.SetCronPeriod((int)(conf.heartbeatPeriod.Nanoseconds() / 1e6)) session.SetCronPeriod((int)(conf.heartbeatPeriod.Nanoseconds() / 1e6))
session.SetWaitTime(conf.GettySessionParam.waitTimeout) session.SetWaitTime(conf.GettySessionParam.waitTimeout)
log.Debug("client new session:%s\n", session.Stat()) log.Debug("client new session:%s\n", session.Stat())
......
...@@ -38,7 +38,7 @@ func (this *EchoPackageHandler) Read(ss getty.Session, data []byte) (interface{} ...@@ -38,7 +38,7 @@ func (this *EchoPackageHandler) Read(ss getty.Session, data []byte) (interface{}
buf = bytes.NewBuffer(data) buf = bytes.NewBuffer(data)
len, err = pkg.Unmarshal(buf) len, err = pkg.Unmarshal(buf)
if err != nil { if err != nil {
if err == ErrNotEnoughSteam { if err == ErrNotEnoughStream {
return nil, 0, nil return nil, 0, nil
} }
......
...@@ -10,5 +10,5 @@ ...@@ -10,5 +10,5 @@
package main package main
var ( var (
Version = "0.8.01" Version = "0.8.1"
) )
...@@ -49,7 +49,7 @@ $(function() { ...@@ -49,7 +49,7 @@ $(function() {
if (socket.readyState != socket.OPEN) { if (socket.readyState != socket.OPEN) {
if (!silence) { if (!silence) {
addChatMessage({ addChatMessage({
Message: '!!Connection closed' Message: '!!Connection closed\n'
}); });
} }
return return
...@@ -125,7 +125,7 @@ $(function() { ...@@ -125,7 +125,7 @@ $(function() {
socket.close(); socket.close();
socket = null; socket = null;
addChatMessage({ addChatMessage({
Message: '!!SYSTEM-WS-Close, connection disconnect' Message: '!!SYSTEM-WS-Close, connection disconnect\n'
}) })
} }
} }
...@@ -226,13 +226,13 @@ $(function() { ...@@ -226,13 +226,13 @@ $(function() {
// console.log("socket.onclose" + e.reason) // console.log("socket.onclose" + e.reason)
disconnect(); disconnect();
addChatMessage({ addChatMessage({
Message: e.reason + '!!SYSTEM-WS-Close, connection closed' Message: e.reason + '!!SYSTEM-WS-Close, connection closed\n'
}); });
}; };
socket.onerror = function() { socket.onerror = function() {
addChatMessage({ addChatMessage({
Message: '!!SYSTEM-WS-Error, connection closed' Message: '!!SYSTEM-WS-Error, connection closed\n'
}); });
} }
}); });
...@@ -49,7 +49,7 @@ const ( ...@@ -49,7 +49,7 @@ const (
) )
var ( var (
ErrNotEnoughSteam = errors.New("packet stream is not enough") ErrNotEnoughStream = errors.New("packet stream is not enough")
ErrTooLargePackage = errors.New("package length is exceed the echo package's legal maximum length.") ErrTooLargePackage = errors.New("package length is exceed the echo package's legal maximum length.")
ErrIllegalMagic = errors.New("package magic is not right.") ErrIllegalMagic = errors.New("package magic is not right.")
) )
...@@ -111,7 +111,7 @@ func (this *EchoPackage) Unmarshal(buf *bytes.Buffer) (int, error) { ...@@ -111,7 +111,7 @@ func (this *EchoPackage) Unmarshal(buf *bytes.Buffer) (int, error) {
) )
if buf.Len() < echoPkgHeaderLen { if buf.Len() < echoPkgHeaderLen {
return 0, ErrNotEnoughSteam return 0, ErrNotEnoughStream
} }
// header // header
...@@ -124,7 +124,7 @@ func (this *EchoPackage) Unmarshal(buf *bytes.Buffer) (int, error) { ...@@ -124,7 +124,7 @@ func (this *EchoPackage) Unmarshal(buf *bytes.Buffer) (int, error) {
return 0, ErrIllegalMagic return 0, ErrIllegalMagic
} }
if buf.Len() < (int)(this.H.Len) { if buf.Len() < (int)(this.H.Len) {
return 0, ErrNotEnoughSteam return 0, ErrNotEnoughStream
} }
// 防止恶意客户端把这个字段设置过大导致服务端死等或者服务端在准备对应的缓冲区时内存崩溃 // 防止恶意客户端把这个字段设置过大导致服务端死等或者服务端在准备对应的缓冲区时内存崩溃
if maxEchoStringLen < this.H.Len-1 { if maxEchoStringLen < this.H.Len-1 {
......
...@@ -126,6 +126,7 @@ func (this *EchoMessageHandler) OnCron(session getty.Session) { ...@@ -126,6 +126,7 @@ func (this *EchoMessageHandler) OnCron(session getty.Session) {
flag bool flag bool
active time.Time active time.Time
) )
this.rwlock.RLock() this.rwlock.RLock()
if _, ok := this.sessionMap[session]; ok { if _, ok := this.sessionMap[session]; ok {
active = session.GetActive() active = session.GetActive()
...@@ -136,6 +137,7 @@ func (this *EchoMessageHandler) OnCron(session getty.Session) { ...@@ -136,6 +137,7 @@ func (this *EchoMessageHandler) OnCron(session getty.Session) {
} }
} }
this.rwlock.RUnlock() this.rwlock.RUnlock()
if flag { if flag {
this.rwlock.Lock() this.rwlock.Lock()
delete(this.sessionMap, session) delete(this.sessionMap, session)
......
...@@ -41,7 +41,7 @@ func (this *EchoPackageHandler) Read(ss getty.Session, data []byte) (interface{} ...@@ -41,7 +41,7 @@ func (this *EchoPackageHandler) Read(ss getty.Session, data []byte) (interface{}
len, err = pkg.Unmarshal(buf) len, err = pkg.Unmarshal(buf)
log.Debug("pkg.Read:%#v", pkg) log.Debug("pkg.Read:%#v", pkg)
if err != nil { if err != nil {
if err == ErrNotEnoughSteam { if err == ErrNotEnoughStream {
return nil, 0, nil return nil, 0, nil
} }
......
...@@ -106,8 +106,8 @@ func newSession(session getty.Session) error { ...@@ -106,8 +106,8 @@ func newSession(session getty.Session) error {
session.SetEventListener(newEchoMessageHandler()) session.SetEventListener(newEchoMessageHandler())
session.SetRQLen(conf.GettySessionParam.PkgRQSize) session.SetRQLen(conf.GettySessionParam.PkgRQSize)
session.SetWQLen(conf.GettySessionParam.PkgWQSize) session.SetWQLen(conf.GettySessionParam.PkgWQSize)
session.SetReadDeadline(conf.GettySessionParam.tcpReadTimeout) session.SetReadTimeout(conf.GettySessionParam.tcpReadTimeout)
session.SetWriteDeadline(conf.GettySessionParam.tcpWriteTimeout) session.SetWriteTimeout(conf.GettySessionParam.tcpWriteTimeout)
session.SetCronPeriod((int)(conf.heartbeatPeriod.Nanoseconds() / 1e6)) session.SetCronPeriod((int)(conf.heartbeatPeriod.Nanoseconds() / 1e6))
session.SetWaitTime(conf.GettySessionParam.waitTimeout) session.SetWaitTime(conf.GettySessionParam.waitTimeout)
log.Debug("app accepts new session:%s\n", session.Stat()) log.Debug("app accepts new session:%s\n", session.Stat())
......
...@@ -10,5 +10,5 @@ ...@@ -10,5 +10,5 @@
package main package main
var ( var (
Version = "0.4.04" Version = "0.8.1"
) )
#!/usr/bin/env bash
openssl genrsa -out server.key 2048
openssl req -new -x509 -key server.key -out server.crt
-----BEGIN CERTIFICATE-----
MIICHjCCAYegAwIBAgIQKpKqamBqmZ0hfp8sYb4uNDANBgkqhkiG9w0BAQsFADAS
MRAwDgYDVQQKEwdBY21lIENvMCAXDTcwMDEwMTAwMDAwMFoYDzIwODQwMTI5MTYw
MDAwWjASMRAwDgYDVQQKEwdBY21lIENvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
iQKBgQC5Nxsk6WjeaYazRYiGxHZ5G3FXSlSjV7lZeebItdEPzO8kVPIGCSTy/M5X
Nnpp3uVDFXQub0/O5t9Y6wcuqpUGMOV+XL7MZqSZlodXm0XhNYzCAjZ+URNjTHGP
NXIqdDEG5Ba8SXMOfY6H97+QxugZoAMFZ+N83ggr12IYNO/FbQIDAQABo3MwcTAO
BgNVHQ8BAf8EBAMCAqQwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUw
AwEB/zA5BgNVHREEMjAwgglsb2NhbGhvc3SCC2V4YW1wbGUuY29thwR/AAABhxAA
AAAAAAAAAAAAAAAAAAABMA0GCSqGSIb3DQEBCwUAA4GBAE5dr9q7ORmKZ7yZqeSL
305armc13A7UxffUajeJFujpl2jOqnb5PuKJ7fn5HQKGB0qSq3IHsFua2WONXcTW
Vn4gS0k50IaDpW+yl+ArIo0QwbjPIAcFysX10p9dVO7A1uEpHbRDzefem6r9uVGk
i7dOLEoC8hkfk6nJsNEIEqu6
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKBgQC5Nxsk6WjeaYazRYiGxHZ5G3FXSlSjV7lZeebItdEPzO8kVPIG
CSTy/M5XNnpp3uVDFXQub0/O5t9Y6wcuqpUGMOV+XL7MZqSZlodXm0XhNYzCAjZ+
URNjTHGPNXIqdDEG5Ba8SXMOfY6H97+QxugZoAMFZ+N83ggr12IYNO/FbQIDAQAB
AoGBAJgvuXQY/fxSxUWkysvBvn9Al17cSrN0r23gBkvBaakMASvfSIbBGMU4COwM
bYV0ivkWNcK539/oQHk1lU85Bv0K9V9wtuFrYW0mN3TU6jnl6eEnzW5oy0Z9TwyY
wuGQOSXGr/aDVu8Wr7eOmSvn6j8rWO2dSMHCllJnSBoqQ1aZAkEA5YQspoMhUaq+
kC53GTgMhotnmK3fWfWKrlLf0spsaNl99W3+plwqxnJbye+5uEutRR1PWSWCCKq5
bN9veOXViwJBAM6WS5aeKO/JX09O0Ang9Y0+atMKO0YjX6fNFE2UJ5Ewzyr4DMZK
TmBpyzm4x/GhV9ukqcDcd3dNlUOtgRqY3+cCQQDCGmssk1+dUpqBE1rT8CvfqYv+
eqWWzerwDNSPz3OppK4630Bqby4Z0GNCP8RAUXgDKIuPqAH11HSm17vNcgqLAkA8
8FCzyUvCD+CxgEoV3+oPFA5m2mnJsr2QvgnzKHTTe1ZhEnKSO3ELN6nfCQbR3AoS
nGwGnAIRiy0wnYmr0tSZAkEAsWFm/D7sTQhX4Qnh15ZDdUn1WSWjBZevUtJnQcpx
TjihZq2sd3uK/XrzG+w7B+cPZlrZtQ94sDSVQwWl/sxB4A==
-----END RSA PRIVATE KEY-----
...@@ -49,7 +49,7 @@ const ( ...@@ -49,7 +49,7 @@ const (
) )
var ( var (
ErrNotEnoughSteam = errors.New("packet stream is not enough") ErrNotEnoughStream = errors.New("packet stream is not enough")
ErrTooLargePackage = errors.New("package length is exceed the echo package's legal maximum length.") ErrTooLargePackage = errors.New("package length is exceed the echo package's legal maximum length.")
ErrIllegalMagic = errors.New("package magic is not right.") ErrIllegalMagic = errors.New("package magic is not right.")
) )
...@@ -111,7 +111,7 @@ func (this *EchoPackage) Unmarshal(buf *bytes.Buffer) (int, error) { ...@@ -111,7 +111,7 @@ func (this *EchoPackage) Unmarshal(buf *bytes.Buffer) (int, error) {
) )
if buf.Len() < echoPkgHeaderLen { if buf.Len() < echoPkgHeaderLen {
return 0, ErrNotEnoughSteam return 0, ErrNotEnoughStream
} }
// header // header
...@@ -124,7 +124,7 @@ func (this *EchoPackage) Unmarshal(buf *bytes.Buffer) (int, error) { ...@@ -124,7 +124,7 @@ func (this *EchoPackage) Unmarshal(buf *bytes.Buffer) (int, error) {
return 0, ErrIllegalMagic return 0, ErrIllegalMagic
} }
if buf.Len() < (int)(this.H.Len) { if buf.Len() < (int)(this.H.Len) {
return 0, ErrNotEnoughSteam return 0, ErrNotEnoughStream
} }
if maxEchoStringLen < this.H.Len-1 { if maxEchoStringLen < this.H.Len-1 {
return 0, ErrTooLargePackage return 0, ErrTooLargePackage
......
...@@ -101,8 +101,8 @@ func newSession(session getty.Session) error { ...@@ -101,8 +101,8 @@ func newSession(session getty.Session) error {
session.SetEventListener(newEchoMessageHandler()) session.SetEventListener(newEchoMessageHandler())
session.SetRQLen(conf.GettySessionParam.PkgRQSize) session.SetRQLen(conf.GettySessionParam.PkgRQSize)
session.SetWQLen(conf.GettySessionParam.PkgWQSize) session.SetWQLen(conf.GettySessionParam.PkgWQSize)
session.SetReadDeadline(conf.GettySessionParam.tcpReadTimeout) session.SetReadTimeout(conf.GettySessionParam.tcpReadTimeout)
session.SetWriteDeadline(conf.GettySessionParam.tcpWriteTimeout) session.SetWriteTimeout(conf.GettySessionParam.tcpWriteTimeout)
session.SetCronPeriod((int)(conf.heartbeatPeriod.Nanoseconds() / 1e6)) session.SetCronPeriod((int)(conf.heartbeatPeriod.Nanoseconds() / 1e6))
session.SetWaitTime(conf.GettySessionParam.waitTimeout) session.SetWaitTime(conf.GettySessionParam.waitTimeout)
log.Debug("client new session:%s\n", session.Stat()) log.Debug("client new session:%s\n", session.Stat())
...@@ -119,7 +119,7 @@ func initClient() { ...@@ -119,7 +119,7 @@ func initClient() {
conf.CertFile, conf.CertFile,
) )
} else { } else {
client.gettyClient = getty.NewClient( client.gettyClient = getty.NewWSClient(
(int)(conf.ConnectionNum), (int)(conf.ConnectionNum),
conf.connectInterval, conf.connectInterval,
gxnet.WSHostAddress(conf.ServerHost, conf.ServerPort, conf.ServerPath), gxnet.WSHostAddress(conf.ServerHost, conf.ServerPort, conf.ServerPath),
......
...@@ -38,7 +38,7 @@ func (this *EchoPackageHandler) Read(ss getty.Session, data []byte) (interface{} ...@@ -38,7 +38,7 @@ func (this *EchoPackageHandler) Read(ss getty.Session, data []byte) (interface{}
buf = bytes.NewBuffer(data) buf = bytes.NewBuffer(data)
len, err = pkg.Unmarshal(buf) len, err = pkg.Unmarshal(buf)
if err != nil { if err != nil {
if err == ErrNotEnoughSteam { if err == ErrNotEnoughStream {
return nil, 0, nil return nil, 0, nil
} }
......
...@@ -10,5 +10,5 @@ ...@@ -10,5 +10,5 @@
package main package main
var ( var (
Version = "0.4.04" Version = "0.8.1"
) )
...@@ -49,7 +49,7 @@ const ( ...@@ -49,7 +49,7 @@ const (
) )
var ( var (
ErrNotEnoughSteam = errors.New("packet stream is not enough") ErrNotEnoughStream = errors.New("packet stream is not enough")
ErrTooLargePackage = errors.New("package length is exceed the echo package's legal maximum length.") ErrTooLargePackage = errors.New("package length is exceed the echo package's legal maximum length.")
ErrIllegalMagic = errors.New("package magic is not right.") ErrIllegalMagic = errors.New("package magic is not right.")
) )
...@@ -111,7 +111,7 @@ func (this *EchoPackage) Unmarshal(buf *bytes.Buffer) (int, error) { ...@@ -111,7 +111,7 @@ func (this *EchoPackage) Unmarshal(buf *bytes.Buffer) (int, error) {
) )
if buf.Len() < echoPkgHeaderLen { if buf.Len() < echoPkgHeaderLen {
return 0, ErrNotEnoughSteam return 0, ErrNotEnoughStream
} }
// header // header
...@@ -124,7 +124,7 @@ func (this *EchoPackage) Unmarshal(buf *bytes.Buffer) (int, error) { ...@@ -124,7 +124,7 @@ func (this *EchoPackage) Unmarshal(buf *bytes.Buffer) (int, error) {
return 0, ErrIllegalMagic return 0, ErrIllegalMagic
} }
if buf.Len() < (int)(this.H.Len) { if buf.Len() < (int)(this.H.Len) {
return 0, ErrNotEnoughSteam return 0, ErrNotEnoughStream
} }
// 防止恶意客户端把这个字段设置过大导致服务端死等或者服务端在准备对应的缓冲区时内存崩溃 // 防止恶意客户端把这个字段设置过大导致服务端死等或者服务端在准备对应的缓冲区时内存崩溃
if maxEchoStringLen < this.H.Len-1 { if maxEchoStringLen < this.H.Len-1 {
......
...@@ -41,7 +41,7 @@ func (this *EchoPackageHandler) Read(ss getty.Session, data []byte) (interface{} ...@@ -41,7 +41,7 @@ func (this *EchoPackageHandler) Read(ss getty.Session, data []byte) (interface{}
len, err = pkg.Unmarshal(buf) len, err = pkg.Unmarshal(buf)
log.Debug("pkg.Read:%#v", pkg) log.Debug("pkg.Read:%#v", pkg)
if err != nil { if err != nil {
if err == ErrNotEnoughSteam { if err == ErrNotEnoughStream {
return nil, 0, nil return nil, 0, nil
} }
......
...@@ -106,8 +106,8 @@ func newSession(session getty.Session) error { ...@@ -106,8 +106,8 @@ func newSession(session getty.Session) error {
session.SetEventListener(newEchoMessageHandler()) session.SetEventListener(newEchoMessageHandler())
session.SetRQLen(conf.GettySessionParam.PkgRQSize) session.SetRQLen(conf.GettySessionParam.PkgRQSize)
session.SetWQLen(conf.GettySessionParam.PkgWQSize) session.SetWQLen(conf.GettySessionParam.PkgWQSize)
session.SetReadDeadline(conf.GettySessionParam.tcpReadTimeout) session.SetReadTimeout(conf.GettySessionParam.tcpReadTimeout)
session.SetWriteDeadline(conf.GettySessionParam.tcpWriteTimeout) session.SetWriteTimeout(conf.GettySessionParam.tcpWriteTimeout)
session.SetCronPeriod((int)(conf.heartbeatPeriod.Nanoseconds() / 1e6)) session.SetCronPeriod((int)(conf.heartbeatPeriod.Nanoseconds() / 1e6))
session.SetWaitTime(conf.GettySessionParam.waitTimeout) session.SetWaitTime(conf.GettySessionParam.waitTimeout)
log.Debug("app accepts new session:%s\n", session.Stat()) log.Debug("app accepts new session:%s\n", session.Stat())
...@@ -117,7 +117,6 @@ func newSession(session getty.Session) error { ...@@ -117,7 +117,6 @@ func newSession(session getty.Session) error {
func initServer() { func initServer() {
var ( var (
err error
addr string addr string
portList []string portList []string
pathList []string pathList []string
...@@ -145,23 +144,17 @@ func initServer() { ...@@ -145,23 +144,17 @@ func initServer() {
panic("the @Ports's length is not equal to @Paths.") panic("the @Ports's length is not equal to @Paths.")
} }
for idx, port := range portList { for idx, port := range portList {
server = getty.NewServer()
// addr = *host + ":" + port
// addr = conf.Host + ":" + port
addr = gxnet.HostAddress2(conf.Host, port) addr = gxnet.HostAddress2(conf.Host, port)
err = server.Listen("tcp", addr)
if err != nil {
panic(fmt.Sprintf("server.Listen(tcp, addr:%s) = error{%#v}", addr, err))
}
// run server
if conf.CertFile != "" && conf.KeyFile != "" { if conf.CertFile != "" && conf.KeyFile != "" {
server.RunWSSEventLoop(newSession, pathList[idx], conf.CertFile, conf.KeyFile, conf.CACert) server = getty.NewWSSServer(addr, pathList[idx], conf.CertFile, conf.KeyFile, conf.CACert)
log.Debug("server bind addr{wss://%s/%s} ok!", addr, pathList[idx]) log.Debug("server bind addr{wss://%s/%s} ok!", addr, pathList[idx])
} else { } else {
server.RunWSEventLoop(newSession, pathList[idx]) server = getty.NewWSServer(addr, pathList[idx])
log.Debug("server bind addr{ws://%s/%s} ok!", addr, pathList[idx]) log.Debug("server bind addr{ws://%s/%s} ok!", addr, pathList[idx])
} }
server.RunEventloop(newSession)
// run server
serverList = append(serverList, server) serverList = append(serverList, server)
} }
} }
......
...@@ -10,5 +10,5 @@ ...@@ -10,5 +10,5 @@
package main package main
var ( var (
Version = "0.4.04" Version = "0.8.1"
) )
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment