Make IDs for chat messages generated server-side, not client. For #26
This commit is contained in:
parent
5dffaf215b
commit
a297e33eff
@ -10,6 +10,8 @@ import (
|
|||||||
|
|
||||||
"github.com/gabek/owncast/models"
|
"github.com/gabek/owncast/models"
|
||||||
"github.com/gabek/owncast/utils"
|
"github.com/gabek/owncast/utils"
|
||||||
|
|
||||||
|
"github.com/teris-io/shortid"
|
||||||
)
|
)
|
||||||
|
|
||||||
const channelBufSize = 100
|
const channelBufSize = 100
|
||||||
@ -102,6 +104,12 @@ func (c *Client) listenRead() {
|
|||||||
// read data from websocket connection
|
// read data from websocket connection
|
||||||
default:
|
default:
|
||||||
var msg models.ChatMessage
|
var msg models.ChatMessage
|
||||||
|
id, err := shortid.Generate()
|
||||||
|
if err != nil {
|
||||||
|
log.Panicln(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
msg.ID = id
|
||||||
|
|
||||||
if err := websocket.JSON.Receive(c.ws, &msg); err == io.EOF {
|
if err := websocket.JSON.Receive(c.ws, &msg); err == io.EOF {
|
||||||
c.doneCh <- true
|
c.doneCh <- true
|
||||||
|
@ -69,8 +69,6 @@ func (s *server) sendAll(msg models.ChatMessage) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *server) ping() {
|
func (s *server) ping() {
|
||||||
// fmt.Println("Start pinging....", len(s.clients))
|
|
||||||
|
|
||||||
ping := models.PingMessage{MessageType: "PING"}
|
ping := models.PingMessage{MessageType: "PING"}
|
||||||
for _, c := range s.Clients {
|
for _, c := range s.Clients {
|
||||||
c.pingch <- ping
|
c.pingch <- ping
|
||||||
|
@ -3,8 +3,6 @@ package core
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
log "github.com/sirupsen/logrus"
|
|
||||||
|
|
||||||
"github.com/gabek/owncast/core/chat"
|
"github.com/gabek/owncast/core/chat"
|
||||||
"github.com/gabek/owncast/models"
|
"github.com/gabek/owncast/models"
|
||||||
)
|
)
|
||||||
@ -24,7 +22,6 @@ func (cl ChatListenerImpl) ClientRemoved(clientID string) {
|
|||||||
|
|
||||||
//MessageSent is for when a message is sent
|
//MessageSent is for when a message is sent
|
||||||
func (cl ChatListenerImpl) MessageSent(message models.ChatMessage) {
|
func (cl ChatListenerImpl) MessageSent(message models.ChatMessage) {
|
||||||
log.Printf("Message sent to all: %s", message.String())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//SendMessageToChat sends a message to the chat server
|
//SendMessageToChat sends a message to the chat server
|
||||||
|
1
go.mod
1
go.mod
@ -13,6 +13,7 @@ require (
|
|||||||
github.com/multiformats/go-multiaddr v0.2.2
|
github.com/multiformats/go-multiaddr v0.2.2
|
||||||
github.com/radovskyb/watcher v1.0.7
|
github.com/radovskyb/watcher v1.0.7
|
||||||
github.com/sirupsen/logrus v1.6.0
|
github.com/sirupsen/logrus v1.6.0
|
||||||
|
github.com/teris-io/shortid v0.0.0-20171029131806-771a37caa5cf
|
||||||
github.com/yutopp/go-flv v0.2.0
|
github.com/yutopp/go-flv v0.2.0
|
||||||
github.com/yutopp/go-rtmp v0.0.0-20191212152852-4e41609a99bb
|
github.com/yutopp/go-rtmp v0.0.0-20191212152852-4e41609a99bb
|
||||||
golang.org/x/net v0.0.0-20200602114024-627f9648deb9
|
golang.org/x/net v0.0.0-20200602114024-627f9648deb9
|
||||||
|
2
go.sum
2
go.sum
@ -920,6 +920,8 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5
|
|||||||
github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE=
|
github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE=
|
||||||
github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ=
|
github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ=
|
||||||
github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA=
|
github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA=
|
||||||
|
github.com/teris-io/shortid v0.0.0-20171029131806-771a37caa5cf h1:Z2X3Os7oRzpdJ75iPqWZc0HeJWFYNCvKsfpQwFpRNTA=
|
||||||
|
github.com/teris-io/shortid v0.0.0-20171029131806-771a37caa5cf/go.mod h1:M8agBzgqHIhgj7wEn9/0hJUZcrvt9VY+Ln+S1I5Mha0=
|
||||||
github.com/texttheater/golang-levenshtein v0.0.0-20180516184445-d188e65d659e/go.mod h1:XDKHRm5ThF8YJjx001LtgelzsoaEcvnA7lVWz9EeX3g=
|
github.com/texttheater/golang-levenshtein v0.0.0-20180516184445-d188e65d659e/go.mod h1:XDKHRm5ThF8YJjx001LtgelzsoaEcvnA7lVWz9EeX3g=
|
||||||
github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c h1:u6SKchux2yDvFQnDHS3lPnIRmfVJ5Sxy3ao2SIdysLQ=
|
github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c h1:u6SKchux2yDvFQnDHS3lPnIRmfVJ5Sxy3ao2SIdysLQ=
|
||||||
github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM=
|
github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM=
|
||||||
|
@ -11,12 +11,6 @@ type ChatMessage struct {
|
|||||||
MessageType string `json:"type"`
|
MessageType string `json:"type"`
|
||||||
}
|
}
|
||||||
|
|
||||||
//String converts the chat message to string
|
|
||||||
//TODO: is this required? or can we remove it
|
|
||||||
func (s ChatMessage) String() string {
|
|
||||||
return s.Author + " says " + s.Body
|
|
||||||
}
|
|
||||||
|
|
||||||
//Valid checks to ensure the message is valid
|
//Valid checks to ensure the message is valid
|
||||||
func (s ChatMessage) Valid() bool {
|
func (s ChatMessage) Valid() bool {
|
||||||
return s.Author != "" && s.Body != "" && s.ID != ""
|
return s.Author != "" && s.Body != "" && s.ID != ""
|
||||||
|
@ -207,7 +207,6 @@ class Messaging {
|
|||||||
var message = new Message({
|
var message = new Message({
|
||||||
body: content,
|
body: content,
|
||||||
author: this.username,
|
author: this.username,
|
||||||
id: uuidv4(),
|
|
||||||
});
|
});
|
||||||
const messageJSON = JSON.stringify(message);
|
const messageJSON = JSON.stringify(message);
|
||||||
if (window && window.ws) {
|
if (window && window.ws) {
|
||||||
|
@ -35,13 +35,6 @@ function jumpToBottom(element) {
|
|||||||
}, 50, element);
|
}, 50, element);
|
||||||
}
|
}
|
||||||
|
|
||||||
function uuidv4() {
|
|
||||||
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
||||||
const r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
|
|
||||||
return v.toString(16);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// convert newlines to <br>s
|
// convert newlines to <br>s
|
||||||
function addNewlines(str) {
|
function addNewlines(str) {
|
||||||
return str.replace(/(?:\r\n|\r|\n)/g, '<br />');
|
return str.replace(/(?:\r\n|\r|\n)/g, '<br />');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user