源码地址: https://github.com/JianBiHua/go_line_chat
注意: 效果以代码为准! 可能代码会修改部分,导致与教程不一样.
开发环境说明
开发语言: GO 1.12.1
开发工具: VSCode
数据库: sqlite3
Start
看代码,这节很简单.
下面就是Main.go的所有代码
// =========main.go=======
package main
import (
"GoWorkspace/go_line_chat/src/server/chatlog"
"GoWorkspace/go_line_chat/src/server/configer"
"GoWorkspace/go_line_chat/src/server/servers/mainserver"
"bufio"
"flag"
"os"
)
// 打印输出日志,
func log(msg string) {
chatlog.Append(chatlog.LOGMAIN, msg)
}
// 显示菜单,
func showMenu() {
log("===========命令菜单======")
// 打印菜单像
log("users--显示所有的注册用户")
log("onlines--显示所有的在线用户")
log("states--显示所有服务器的状态")
log("ports--显示所有服务器的端口")
log("restart all--重启所有服务器")
log("restart login--重启登陆服务器")
log("restart file--重启文件服务器")
log("restart chat--重启聊天服务器")
log("logmode X--修改日志模式[0-5]")
}
// 使用方法:
//
// 生成应用:
// go build -o LineChat
//
// 执行应用:
// LineChat -port 8889
func main() {
// 通过命令行, 获取服务的端口号
var port int
flag.IntVar(&port, "port", 8888, "set main server port")
flag.Parse()
// 启动Server
mainserver.StartMainServer(port)
// 设置日志模式。
configer.CurrentLogMode = chatlog.LOGMAIN
// 显示菜单
showMenu()
// 循环读取输入
input := bufio.NewScanner(os.Stdin) //初始化一个扫表对象
log("输入命令: ")
for input.Scan() {
cmd := input.Text() //把输入内容转换为字符串
switch cmd {
case "menu":
showMenu()
case "users":
log("--显示所有的注册用户--")
case "onlines":
log("--显示所有的在线用户--")
case "states":
log("--显示所有服务器的状态--")
case "ports":
log("--显示所有服务器的端口--")
case "restart all":
log("--显示所有服务器的端口--")
case "restart login":
log("--重启登陆服务器--")
case "restart file":
log("--重启文件服务器--")
case "restart chat":
log("--重启聊天服务器--")
case "logmode 0":
log("--修改日志模式为: 主程序模式--")
configer.CurrentLogMode = chatlog.LOGMAIN
case "logmode 1":
log("--修改日志模式为: 主服务器模式--")
configer.CurrentLogMode = chatlog.LOGMAINSERVER
default:
log("命令错误: " + cmd)
}
log("===输入命令: ")
}
}
我暂时定义了这些菜单, 之后可能会添加或者删减.
讲解开始:
- 看到这些菜单了吧,咱的服务端没有界面,只能通过打印的东西了解程序运行情况。但是,当程序庞大了,从一堆打印中找到你想要的,实在有点累,所以搞了一些日志工具,让它该显示的显示,不该显示的不显示,就方便多了.
- 其它的一些代码我稍后会一一列举。