搜素材网logo
  • 首页
  • 前端特效
  • 程序源码
  • 网站模板
  • 技术文章
  • 编程语言
  • VIP全站免费下载
  • 登录
  • 注册
  • QQ登录
搜索

热门搜索: 个人免签支付 素材网站源码 图片素材站源码 游戏源码 js广告 jquery选项卡 jQuery导航

当前位置:首页 > 编程语言 > 使用websocket开发智能聊天机器人

使用websocket开发智能聊天机器人

2021-02-16 01:18

分享到:
阅读:587

标签:就是   客户   定义   开始   soc   adt   query   use   javascrip   

前面我们学习了异步web框架(sanic)和http异步调用库httpx,今天我们学习websocket技术。

websocket简介

我们知道HTTP协议是:请求->响应,如果没有响应就一直等着,直到超时;但是有时候后台的处理需要很长时间才能给到结果,比如30分钟,那HTTP的请求不可能等这么久,所以,可以通过 Ajax 轮询来解决。那就是每间隔一段时间就请求一次。

技术图片

这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。

HTML5 定义的 WebSocket 协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。

技术图片

浏览器通过 JavaScript 向服务器发出建立 WebSocket 连接的请求,连接建立以后,客户端和服务器端就可以通过 TCP 连接直接交换数据。

好了,WebSocket就是为了解决这个问题的,感兴趣去看其他资料!

智能聊天机器人

我一开始只是为了学习WebSocket找个例子,不少例子使用了聊天功能。我稍加改进就变成了智能聊天功能了。

技术图片

通过异步sanic异步框架实现Web功能。官方文档里面给个WebSocket使用的例子。

https://sanic.readthedocs.io/en/latest/sanic/websocket.html

snaic部分核心代码如下:

import sanic
import httpx
from sanic import Sanic
from sanic.response import json
from sanic.websocket import WebSocketProtocol
from sanic.exceptions import NotFound
from sanic.response import html
from jinja2 import Environment, PackageLoader


env = Environment(loader=PackageLoader(‘app‘, ‘templates‘))

app = Sanic(__name__)


@app.route(‘/‘)
async def index(request):
    """
    聊天页面
    """
    template = env.get_template(‘index.html‘)
    html_content = template.render(title=‘聊天机器人‘)
    return html(html_content)


@app.websocket(‘/chat‘)
async def chat(request, ws):
    """
    处理聊天信息,并返回消息
    """
    while True:
        user_msg = await ws.recv()
        print(‘Received: ‘ + user_msg)
        intelligence_data = {"key": "free", "appid": 0, "msg": user_msg}
        r = httpx.get("http://api.qingyunke.com/api.php", params=intelligence_data)
        chat_msg = r.json()["content"]
        print(‘Sending: ‘ + chat_msg)
        await ws.send(chat_msg)


if __name__ == "__main__":
    app.error_handler.add(
        NotFound,
        lambda r, e: sanic.response.empty(status=404)
    )
    app.run(host="192.168.0.7", port=8000, protocol=WebSocketProtocol, debug=True)
  • index() 函数,返回聊天页面。这里用到了jinja2 模板渲染库。
  • chat() 函数,通过webSocket实现消息的接收、处理和返回。

智能聊天是怎么做到的,这里要感谢 青云客网络,他们提供了免费的接口。(我当时也只是抱着试试看的态度,没想到,duang~! )

user_msg = "你好!"
intelligence_data = {"key": "free", "appid": 0, "msg": user_msg}
r = httpx.get("http://api.qingyunke.com/api.php", params=intelligence_data)
chat_msg = r.json()["content"]
print(chat_msg)

是不是超简单。

再来看前端代码,主要部分:

  

这里使用到了 bootstrap 前端框架,主要 调用部分在:

var Socket = new WebSocket(url, [protocol] );
  • Socket.send(msg): 使用连接发送数据。
  • Socket.onmessage: 客户端接收服务端数据时触发。

我知道,你迫不及待想要完整的代码了:

https://github.com/defnngj/learning-API-test

使用websocket开发智能聊天机器人

标签:就是   客户   定义   开始   soc   adt   query   use   javascrip   

原文地址:https://www.cnblogs.com/fnng/p/12977422.html

上一篇:ECharts整合HT for Web的网络拓扑图应用

下一篇:JWT -- JSON WEB TOKEN

文章来自:搜素材网的编程语言模块,转载请注明文章出处。
文章标题:使用websocket开发智能聊天机器人
文章链接:http://soscw.com/essay/55867.html

评论


亲,登录后才可以留言!

热门文章

  • 自定义WPF窗体形状
  • 多继承c3算法与网路编程
  • NET Core 3.0中的WPF
  • 📏Python项目打包方法
  • 导航,头部,CSS基础
  • 导航,头部,CSS基础
  • <3>Python开发——条件判断
  • <2014 04 29> c/c++常用库总结
  • 'telnet' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  • <<< html编码中js和html编码不一致导致乱码

推荐文章

最新文章

  • Eclipse 发布web项目的注意点
  • 实现Winform端窗体关闭后刷新html网页内容
  • WPF 10天修炼 - WPF布局容器
  • 自己写的分页器,BOOTSTRAP+JQUERY(非完全版,后续完善)
  • WinSCP与Putty远程连接linux
  • C# 基础知识复习(一)
  • jQuery对象与DOM对象转换
  • windows学习记录----hello world与窗口创建
  • Linux下利用phpize安装memcashe的php源码扩展包
  • CSS3选择器 ::selection选择器

置顶文章

关于我们 | 版权声明 | 常见问题 | 素材投稿 | 联系我们 | 网站地图 |
搜素材网素材除本站原创外均由用户分享,若发现权利被侵害,请联系及时联系我们,我们会在第一时间进行处理。
特别说明:本站所有资源除本站原创外仅供学习与参考,请勿用于商业用途,如有侵犯您的版权请联系客服服务QQ:点击这里给我发消息
Copyright © 2025 soscw.com 搜素材网素材网版权所有 蜀ICP备18015633号-1