之前学习socket.io的使用时,曾经跟着教程耍了一下实现群聊的功能。心血来潮,实现一下随机匹配私聊的功能。
马上体验
尴尬的问题
做这个私聊的功能,最尴尬的问题是没有用户使用,你进去了,基本上不会遇上有其他人刚好在线,所以往往是一直处于匹配中。实在尴尬,别人都怀疑是不是有bug。
于是乎,聊天机器人就派上用场了。搜了一下免费的聊天机器人API,发现了两个比较方便使用的,最重要是免费,哈哈哈。
+ 青云客智能聊天机器人API
+ 一个AI
其中,青云客是不需要注册的,但是机器人有点弱鸡;一个AI需要注册,调用接口的时候需要带上token。处于可靠性考虑,在上面的demo中,优先使用一个AI的接口,当调用失败时,再去调用青云客的接口。当然,都失败的时候,只能回复一个呵呵了。
私聊的关键
socket.io实现私聊的关键在于给指定的客户端发送消息,如何取到指定客户端的socket对象呢?
socket.io版本<1,使用io.sockets.clients()方法,可以取得所有在线的socket对象数组;
socket.io版本>1,使用io.sockets.sockets属性,可以取得所有在线的socket对象集合。
因此,我们可以在服务端用一个全局数据存储socket.id和用户的映射关系,当然,如果需要做持久化,那可以考虑用数据库来存储。