Skip to content
This repository was archived by the owner on Sep 29, 2024. It is now read-only.

Commit dc611ea

Browse files
sshaplygingoogollee
authored andcommitted
ref
1 parent a16a474 commit dc611ea

File tree

5 files changed

+34
-14
lines changed

5 files changed

+34
-14
lines changed

connection_handlers.go

+17-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package socketio
22

3-
import "github.com/googollee/go-socket.io/parser"
3+
import (
4+
"log"
5+
6+
"github.com/googollee/go-socket.io/parser"
7+
)
48

59
var readHandlerMapping = map[parser.Type]readHandler{
610
parser.Ack: ackPacketHandler,
@@ -72,7 +76,12 @@ func connectPacketHandler(c *conn, header parser.Header) error {
7276
conn.Join(c.ID())
7377
}
7478

75-
handler.dispatch(conn, header)
79+
_, err := handler.dispatch(conn, header)
80+
if err != nil {
81+
log.Println("dispatch connect packet", err)
82+
c.onError(header.Namespace, err)
83+
return errHandleDispatch
84+
}
7685

7786
c.write(header)
7887

@@ -101,7 +110,12 @@ func disconnectPacketHandler(c *conn, header parser.Header) error {
101110
return nil
102111
}
103112

104-
handler.dispatch(conn, header, args...)
113+
_, err = handler.dispatch(conn, header, args...)
114+
if err != nil {
115+
log.Println("dispatch disconnect packet", err)
116+
c.onError(header.Namespace, err)
117+
return errHandleDispatch
118+
}
105119

106120
return nil
107121
}

errors.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ var (
1212
errFailedConnectNamespace = errors.New("failed connect to namespace without handler")
1313
)
1414

15-
// event errors.
15+
// common connection dispatch errors.
1616
var (
1717
errHandleDispatch = errors.New("handler dispatch error")
1818

namespace_conn.go

+1
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ func (nc *namespaceConn) Emit(eventName string, v ...interface{}) {
6161
header := parser.Header{
6262
Type: parser.Event,
6363
}
64+
6465
if nc.namespace != aliasRootNamespace {
6566
header.Namespace = nc.namespace
6667
}

namespace_handler.go

+6-2
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import (
1111
type namespaceHandler struct {
1212
broadcast Broadcast
1313

14-
eventsLock sync.RWMutex
1514
events map[string]*funcHandler
15+
eventsLock sync.RWMutex
1616

1717
onConnect func(conn Conn) error
1818
onDisconnect func(conn Conn, msg string)
@@ -80,7 +80,11 @@ func (nh *namespaceHandler) dispatch(conn Conn, header parser.Header, args ...re
8080

8181
case parser.Error:
8282
if nh.onError != nil {
83-
nh.onError(conn, errors.New(getDispatchMessage(args...)))
83+
msg := getDispatchMessage(args...)
84+
if msg == "" {
85+
msg = "parser error dispatch"
86+
}
87+
nh.onError(conn, errors.New(msg))
8488
}
8589
}
8690

parser/buffer.go

+9-8
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@ type Buffer struct {
1515
Data []byte
1616
}
1717

18+
type BufferData struct {
19+
Num uint64
20+
PlaceHolder bool `json:"_placeholder"`
21+
Data []byte
22+
}
23+
1824
// MarshalJSON marshals to JSON.
1925
func (a Buffer) MarshalJSON() ([]byte, error) {
2026
var buf bytes.Buffer
@@ -35,7 +41,7 @@ func (a *Buffer) marshalJSONBuf(buf *bytes.Buffer) error {
3541
}
3642

3743
func (a *Buffer) encodeText(buf *bytes.Buffer) error {
38-
buf.WriteString("{\"type\":\"Buffer\",\"data\":[")
44+
buf.WriteString(`{"type":"Buffer","data":[`)
3945
for i, d := range a.Data {
4046
if i > 0 {
4147
buf.WriteString(",")
@@ -48,7 +54,7 @@ func (a *Buffer) encodeText(buf *bytes.Buffer) error {
4854
}
4955

5056
func (a *Buffer) encodeBinary(buf *bytes.Buffer) error {
51-
buf.WriteString("{\"_placeholder\":true,\"num\":")
57+
buf.WriteString(`{"_placeholder":true,"num":`)
5258
buf.WriteString(strconv.FormatUint(a.num, 10))
5359
buf.WriteString("}")
5460

@@ -57,12 +63,7 @@ func (a *Buffer) encodeBinary(buf *bytes.Buffer) error {
5763

5864
// UnmarshalJSON unmarshal data from JSON.
5965
func (a *Buffer) UnmarshalJSON(b []byte) error {
60-
var data struct {
61-
Num uint64
62-
PlaceHolder bool `json:"_placeholder"`
63-
Data []byte
64-
}
65-
66+
var data BufferData
6667
if err := json.Unmarshal(b, &data); err != nil {
6768
return err
6869
}

0 commit comments

Comments
 (0)