I know web based chatting service can be as complicated as possible, but I 
want to build a web based chat server that is as simple as possible. 

And the chapter 8 of the book "The Go Programming Language" at
https://github.com/adonovan/gopl.io/tree/master/ch8/chat
seems to be a perfect starting point to learn the asynchronous web 
based chat service building.

I've built a whole (simplest) web service that support user login and 
logout, at:
https://github.com/suntong/lang/blob/master/lang/Go/src/net/HttpD/demo-redirect.go
and was planning that the next logic steps would be to

- incorporate the chat server as another goroutine besides my web server, 
and
- add the chatting to my web service by spinning up a new chatting client 
goroutine when a new user logs in.

However, it is incorporating the chatting client into my web service that 
made my head spinning none-stop. IE, for the following few lines of code 
from
https://github.com/adonovan/gopl.io/blob/master/ch8/netcat3/netcat.go

done := make(chan struct{})
go func() {
io.Copy(os.Stdout, conn) // NOTE: ignoring errors
log.Println("done")
done <- struct{}{} // signal the main goroutine
}()
mustCopy(conn, os.Stdin)
conn.Close()
<-done // wait for background goroutine to finish

I'm having a hard time putting it into my code. Specifically, how to handle 
incoming new chats message and push to all web base clients. What's the 
simplest solution for it? 
Note, to avoid user hitting refresh and lost all past conversation, I was 
planning to store all of them, including the connect variable returned from 
`net.Dial` into cookies. I know that there is a 4K size limit to total 
cookies size, but that's OK with me for such a simplest chatting service, 
which would add as minimum to the solution from ch8/chat as possible.

Anybody can help please?


-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/e3327bc2-4f2f-4038-b38d-0c9794ec6235n%40googlegroups.com.

Reply via email to