go语言聊天室实现(七)websocket收消息设置

Python015

go语言聊天室实现(七)websocket收消息设置,第1张

上一节中,我们为每个连接都创建了一个goroutine来读取其中的消息,现在我们将这个读取消息的方法实现一下。

我们在application目录下新建controllers目录,并在其中创建一个MessageController.go文件。

首先我们新建一个MessageController的结构体,内容如下

这个结构体包括两个内容,一个是我们将连接放在数组之后,返回的索引,另一个是连接本身.

这个是具体的方法。

我们首先设置了一下读消息的大小、超时时间以及超时后需要的操作。

超时时间如果设置为0,那么就是永不超时。之前在这里直接写0,被告知需要传一个time.Time类型的数据。最终谷歌后才得到了这个值time.Time{}为"0001-01-01 00:00:00 +0000 UTC"。

我们将用户手法消息的内容定义为一个结构体,然后将用户的订阅信息的json通过json.unmarshal转换成这个结构体。

之后的switch操作与我们在Swoole中的操作基本雷同,在查询到login之后,调用service中 的login方法来进行注册。

下一节中我们再介绍具体的注册逻辑。

采用什么语言?vfp么?还是C?java?请楼主明确·

登陆表单简单描述如下:

第一步,建立默认账户自由表:

假设表名为yh.dbf包含用户名yhm,密码mm两个字段,字段属性自己规定。

第二步,建立登陆表单:

表单名字login.scx,包含三个标签,三个文本框,三个按钮文件

三个标签的caption分别改为:用户名,密码,确认密码

三个按钮的caption分别改为:注册,登陆,退出

把第一步建立的表加入到该表单的数据环境中。

第三步,适当调整各个控件的位置。并填写以下代码

表单form的init事件代码:

thisform.label3.visible=.f.

thisform.text3.visible=.f.

注册(command1)按钮的click代码:

thisform.label3.visible=.t.

thisform.text3.visible=.t.

thisform.command2.enabled=.f.

thisform.command1.caption=“保存”

thisform.refresh

if thisform.text3.visible=.t.

use yh

go top

locate for alltrim(thisform.text1.value)==alltrim(yh.yhm)

if found()

messagebox(“该用户已存在!请重新输入用户名!”,0,“提示信息”)

return

eles

if alltrim(thisform.text2.value)==alltrim(thisform.text3.value)

append

replace yhm with alltrim(thisform.text1.value)

replace mmm with alltrim(thisform.text2.value)

messagebox(“注册成功!",0,"提示信息")

thisform.text2.value=''

thisform.text3.value=''

thisform.text3.visible=.f.

thisform.label3.visible.f.

thisform.command1.caption=”注册"

thisform.refresh

else

messagebox(“两次密码不一致”,0,"错误信息!")

thisform.text2.value=''

thisform.text3.value=''

return

endif

endif

endif

use

thisform.refresh

登陆按钮(command2)的代码:

locate for alltrim(thisform.text1.value)==alltrim(yh.yhm) and

alltrim(thisform.text2.value)==alltrim(yh.mm)

if found()

messagebox(”登陆成功!",0,"提示信息")

thisform.text1.value=''

thisform.text2.value=''

thisform.refresh

else

messagebox("用户名或者密码错误!",0,"错误信息!")

thisform.text1.value=''

thisform.text2.value=''

thisform.refresh

return

endif

退出按钮(command3)的代码:

thisform.release

基本上可以实现你要的要求了。某些代码可能和你实际操作中的有所变化,请自行调整。另外,如果要实现密码框输入时是看不见数字的,那么要修改text的password char属性

用Session啊,用各种WEB框架的话可以使用框架提供的Session支持。如果是原生的就自己实现。各种框架都是用Cookies实现的,有用户访问就设置一个唯一的Cookie,把对应的用户信息保存起来。同理用户登录时就把登录信息也保存到Session里。