V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
qq12365411
V2EX  ›  问与答

windows 上的消息通知软件,用了 django-rest-framework,求思路

  •  
  •   qq12365411 · 2015-08-30 10:34:20 +08:00 · 3009 次点击
    这是一个创建于 3377 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有个 web 后台, 如果用户 订阅了某个消息[比如 订阅了 文章]

    那么 当后台有人添加了新文章, 那么对应的用户就会收到 消息

    但有时候 用户可能没有打开浏览器 ,就可能无法及时 接收到消息

    为了让用户不错过重要消息,打算弄一个 常驻的 windows 桌面软件,每个 1 分钟,请求一下服务器 看看是不是有待办事项和消息

    服务器用的 django-rest-framework , 客户端打算也弄 python 写,然后 弄成 exe 格式的

    对于对于整体代码思路 ,有些不太了解

    比如 django 里 我有个文章模块, 当用户添加了文章, 该如何触发 消息, 又如何存储管理用户是否阅读了这个消息

    有现成的轮子吗,大家有什么思路吗

    多谢大家

    22 条回复    2015-09-01 16:24:08 +08:00
    squid157
        1
    squid157  
       2015-08-30 10:55:44 +08:00 via iPhone   ❤️ 1
    Django 有 Signal ,但如果你想用桌面客户端一分钟一次,轮询也不是坏主意。看具体使用情况了。
    Septembers
        2
    Septembers  
       2015-08-30 11:06:03 +08:00 via Android   ❤️ 1
    WebSocket
    loading
        3
    loading  
       2015-08-30 11:09:24 +08:00 via Android   ❤️ 1
    如果 windows 客户端开发好了,开源吗?

    也想用用!
    maemual
        4
    maemual  
       2015-08-30 11:27:27 +08:00   ❤️ 1
    一分钟一次的这种频率,每次去拉一遍完全没什么多大问题啊。是否已阅自己做个标记不就完了么。
    iwege
        5
    iwege  
       2015-08-30 11:50:47 +08:00   ❤️ 1
    electron /node-webkit 直接封装网站。
    menc
        6
    menc  
       2015-08-30 11:59:23 +08:00   ❤️ 1
    有现成的轮子,但是不是 django ,我强烈推荐你看看 mqtt 协议,基于 tcp 长连接的面向 topic 的订阅,可以实时 subscribe 和 publish
    abelyao
        7
    abelyao  
       2015-08-30 14:34:02 +08:00 via iPhone   ❤️ 1
    @loading 話說忽然覺得 V2 上做 windows 桌面開發的人貌似挺少啊,你們是想要什麼功能?檢測網站新內容、然後右下角托盤給個提示?
    loading
        8
    loading  
       2015-08-30 14:58:29 +08:00 via Android   ❤️ 1
    @abelyao 如果是 restful api 支持的,能直接显示 web 页面,我觉得就能满足我们这里大部分人的需求。
    因为他们都是写 web 的~
    Kilerd
        9
    Kilerd  
       2015-08-30 16:02:43 +08:00 via Android
    @loading 确实有这个需求,毕竟如果只是可以通知的程序的话,直接显示 web 就好。 有做出来的,麻烦通知一下。
    abelyao
        10
    abelyao  
       2015-08-31 04:00:26 +08:00 via iPhone   ❤️ 1
    @loading @Kilerd
    具体描述一下流程呢?通过配置文件动态配置 API 地址,及查询频率等,如果有新的,如何直接显示 web 页面?是本地默认浏览器直接打开网页?那岂不是很容易打断用户的操作?
    loading
        11
    loading  
       2015-08-31 07:01:20 +08:00 via Android   ❤️ 1
    @abelyao
    1.有可选的随系统启动选项
    2.第一次启动时可输入用户名和密码,这个在 web 系统里是需要的,这个你应该知道。这个最好也是一个 web 页面。方便美化。
    3.通知应该有两种方式,这个是通过预先定义使用哪种,再加入一种就是每次轮询时返回的信息中指定的一个内容。例如返回两个值 method,content 。当 method 是 web page ,那么就弹出 url 是 content 的页面。如果 method 是 bubble 就用气泡方式显示 content 的内容。点击气泡时,动作也是可定,关闭气泡并访问一个地址,或者打开一个地址。



    上面说到的弹出 web 页面通知不知调用浏览器,而是类似搜狗输入法那种无边框小窗的方式。再次点击时才调用系统默认浏览器。

    也许我都可以用 aauto 写一个了~可是可能会等到明年~
    loading
        12
    loading  
       2015-08-31 07:05:51 +08:00 via Android
    关闭气泡时访问一个地址是为了给我们写的系统一个用户已读通知的信号!不需要调用浏览器。

    程序在轮询时最好都要带 cookie ,和浏览器访问时一样。(这个我不知道 windows 的方式),这种方式能极大地让我们偷懒。

    隔行如隔山~
    qq12365411
        13
    qq12365411  
    OP
       2015-08-31 09:59:42 +08:00
    @squid157 多谢
    qq12365411
        14
    qq12365411  
    OP
       2015-08-31 09:59:49 +08:00
    @Septembers 谢谢
    abelyao
        15
    abelyao  
       2015-08-31 16:37:16 +08:00   ❤️ 1
    @loading 早上半睡半醒看了你这个描述,然后边想边睡着了…

    如果是按照你说的这样,做成一个固定的也不难,但如果要做成一个可动态配置的,就有些麻烦了。毕竟每个网站他们的消息匹配方式都不一样、相应的处理事件也不一样。而 Winform 程序是需要编译的,可以在 GitHub 上提供整套源代码,但每个要用的朋友都需要自己装个 VS 编译出来也是麻烦。

    反而我发现 V2EX 的提醒系统,有提供 Atom Feed RSS 的接口,每个用户一个 token ,然后给一个固定格式的 XML 结果。

    这两天我到了有 PC 的地方装个 VS 试一下,感觉也蛮好玩的,如果能做出来。
    全动态,全部可自定义配置,包括提醒界面的模板机制,哇,也不错。
    loading
        16
    loading  
       2015-08-31 17:56:39 +08:00 via Android
    @abelyao 动态配置不是可以读取配置文件吗?
    abelyao
        17
    abelyao  
       2015-08-31 18:00:22 +08:00
    @loading 是,但是解析每个网站的数据是不一样的吧,登录的方式也不一样吧,难道为了这个提醒软件,去改网站的结构?有点本末倒置啊…
    loading
        18
    loading  
       2015-08-31 18:02:19 +08:00 via Android
    @abelyao 配置文件都可以是在线获取,只是这个配置文件的地址就必须要有个地方存放。
    我认为成品就两个文件,一个 exe ,一个是 conf.ini 里面只有一行,就是在线获取配置文件的地址。这样分发这个的时候只要写好这一行就行。修改都是服务端的事了。

    进一步可以是加载同目录下的 ico 图标,显示在托盘。




    期待您的作品,感谢您。
    loading
        19
    loading  
       2015-08-31 18:05:01 +08:00 via Android
    @abelyao 你写出的是通用的标准,我们这帮人就会使用您的规范开发接口!相对于自己再写个通知的 exe ,我觉得单独给一个接口并不繁琐!

    你要全世界通用,太难了!至少配置就很难!
    loading
        20
    loading  
       2015-08-31 18:06:06 +08:00 via Android
    @abelyao 也许你可以写成框架…
    abelyao
        21
    abelyao  
       2015-08-31 18:14:34 +08:00
    @loading 哈哈哈,客气了,有时间试一下,我也蛮好奇能不能做成一个尽量通用的软件出来
    yanyandenuonuo
        22
    yanyandenuonuo  
       2015-09-01 16:24:08 +08:00   ❤️ 1
    @menc mqtt+1
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5445 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 08:28 · PVG 16:28 · LAX 00:28 · JFK 03:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.