ラズベリーパイでMyfareカードのアプリを動かすのと同時にWi-Fi内でのチャット機能も追加しました。
https://www.cetus-media.info/article/2021/line-chat/
雛形は上のリンクですが、いくつかカスタマイズしています。
一番大きな部分は、チャット内容をSQLite3に保存して、新たな参加者が入ったらそれまでの履歴を表示するようにしたことでしょうか。
普通に提供されているHTML renderingはテキストしか対応出来ないので、タグが使えるようにginのWriter.WriteStringでHTMLページを組み立ててroom.htmlリクエストに対応しています。
<router.goの該当部分抜き出し>
r.GET("/room/:name", func(c *gin.Context) {
chattername := c.Query("name")
pmsg := chatbuild(chattername)
c.Writer.WriteString(pmsg) // to genrate initial chat page instead of the static html
全部のソースは、
https://github.com/chateight/golang/tree/master/go_chat
になります。ginとmelody使っているので、制御そのものはシンプルに出来ています。
画面はこんな感じです、ブラウザはsafariはJavascriptのサポートレベルがイマイチ(チャット画面に移動時、投稿の最新にスクロールしない)なのでchromeがおすすめです。
admin