GithubHelp home page GithubHelp logo

Comments (11)

Ray-Eldath avatar Ray-Eldath commented on September 26, 2024 1

类似于CoolQ-HTTP-API这种主动的消息服务都是使用事件上报进行消息处理的。
当它检测到一个事件(有新群员啦 有新消息啦)会向你指定的地址发送一个POST请求。
你这边listen这个POST就好。
Avalon是使用Jetty监听POST的。
详见:事件上报 - CoolQ HTTP API
实现请见:Avalon/CoolQBackend

from avalon.

yunsii avatar yunsii commented on September 26, 2024 1

@Ray-Eldath 那个人电脑没有公网IP的啊, 这样又该如何监听呢?

from avalon.

yunsii avatar yunsii commented on September 26, 2024 1

@Ray-Eldath
我觉得还是选择本机测试吧,高级方法以后再搞吧。所以现在让 post_url=127.0.0.1/XXX 本机就能监听到上报消息咯?再有就是自动拉取脚本是指的用 git 命令,设置定时任务吗(我能想到的)?多谢大佬悉心指点

from avalon.

Ray-Eldath avatar Ray-Eldath commented on September 26, 2024 1
  1. 设置post_url=http://127.0.0.1:XXXX/XXXX即能在本机监听到上报的事件。
  2. 对的 你可以在服务器上写一个使用Git定时拉取的脚本实现功能的自动更新。这样就不用每次ssh上去手动更新功能啦

有问题再reopen,我先close了( ^ω^)

from avalon.

Ray-Eldath avatar Ray-Eldath commented on September 26, 2024

你的意思是 CoolQ跑在别人的电脑上 你要监听它电脑上跑着的CoolQ 而你又没有对方的公网IP?

from avalon.

yunsii avatar yunsii commented on September 26, 2024

@Ray-Eldath 不是, 我在阿里云的服务器上使用的CoolQ, 我想在群里使用相关命令, 然后服务器端能上报事件到本机做测试吗? 还是只能写好在服务器上测试呢?

from avalon.

Ray-Eldath avatar Ray-Eldath commented on September 26, 2024

emmmm...这种情况下应该是只能在服务器上测试的了...因为CoolQ-HTTP-API的事件上报要求已知接收方的IP地址...
但事实上应该有一些如NAT洞穿的解决方案能够完成NAT后和公网服务器的数据交换...你可以使用这种解决方案将阿里云服务器的事件上报转发到本机上...但这就不关CoolQ-HTTP-API什么事了
所以:

  1. 建议自己本机开个CoolQ测试。测试完成后将代码部署到生产环境上。或者在生产环境编写一个脚本自动拉取代码。(推荐)
  2. 使用NAT洞穿等解决方案转发CoolQ-HTTP-API上报的数据包到本机。
    • 刚在知乎上看到了一个叫autossh的解决方案。我也不知道是啥也没用过,仅供参考...
    • 使用WebSocket?

from avalon.

yunsii avatar yunsii commented on September 26, 2024

上报事件有时候只能看到响应头,没有消息内容,这是什么情况呀?

from avalon.

Ray-Eldath avatar Ray-Eldath commented on September 26, 2024

诶诶?
这不会吧...您注意下参数的配置?

from avalon.

yunsii avatar yunsii commented on September 26, 2024

@Ray-Eldath
不好意思 好像没看到提醒 忙别的也给忘了。我想在需要的时候调用函数 上报事件。所以导致频繁新建和关闭socket。不知道是否这个原因导致的。我想有空得改为一直监听_(:3J∠)_

所以您是怎样使用的呢?一直监听吗?

from avalon.

Ray-Eldath avatar Ray-Eldath commented on September 26, 2024

@theprimone
诶诶... 我这边是一直开个Jetty然后一直监听的呀 具体就是:

val server = Server(address)
val context = ServletContextHandler(ServletContextHandler.SESSIONS)
server.handler = context
server.stopAtShutdown = true
context.addServlet(ServletHolder(CURRENT_SERVLET), "/post_url")
server.join()
server.start()

不知道这么整会不会频繁新建和关闭套接字;;感觉不会吧
(提醒邮件躺收件箱里好久...万分抱歉!
祝好运~

from avalon.

Related Issues (8)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.