小编Jes*_*Jes的帖子

如何创建jabber/XMPP代理/日志记录服务?

我正在为一家公司工作,该公司正在使用Google Chatback(与我公司案例中的支持员工进行匿名聊天)作为主要的聊天服务提供商.此服务使用XMPP(以前称为Jabber)协议来发送和接收消息.

我们公司有十个支持员工帐户,可以通过我们在我们网站上使用的聊天服务访问它们.员工同时使用Mac OSX和Windows,以及不同操作系统上的不同客户端.聊天也可以通过Android和iOS上的原生应用程序获得.

我们需要一种用于记录聊天会话的服务,我们一直在寻找专有的解决方案,但这些在移动平台上是不受支持的,而且这基本上就是交易破解者.

我决定的解决方案是在消息链中引入另一个链接,记录所有消息.这个想法是服务器通过这个代理发送,根据它的聊天会话记录消息,然后以适当的方式保存这些日志.目前,他们将所有日志存储在Dropbox文件夹中,这是一个容易出错的活动.

理论上,这将允许我们的支持者使用他们选择的任何操作系统/客户端,并且日志将最终在同一个地方.

在使用Smack API进行了一些测试之后,我得出结论,我的XMPP客户端(Android和Windows上的Trillian)都回复了它上次收到消息的资源.这实际上意味着我实现的非常简单的聊天记录器被忽略了.

使用下面的代码与另一个并行运行的客户端进行了测试.只有一个客户端收到该消息.

ConnectionConfiguration config = new ConnectionConfiguration("talk.google.com", 5222, "googlemail.com");
config.setSecurityMode(ConnectionConfiguration.SecurityMode.required);
config.setSASLAuthenticationEnabled(true);
XMPPConnection connection = new XMPPConnection(config);
connection.connect();

Presence presence = new Presence(Presence.Type.unavailable);
connection.login("android_client_username", "android_client_pass");
Message message = new Message("my_test_email@gmail.com");
message.setBody("Hello World!");
connection.sendPacket(message);
connection.sendPacket(presence);
connection.addPacketListener(new PacketListener() {
          public void processPacket(Packet packet) {
             if (packet instanceof Message) {
                Message message = (Message) packet;
                System.out.println(message.getBody()); 
             }
           }
        }, new MessageTypeFilter(Message.Type.chat));
Run Code Online (Sandbox Code Playgroud)
  • 是否可以使用Google Talk服务创建此类代理,即无需托管我们自己的XMPP服务器?
  • 是否可以远程监听服务器上的所有数据包?
  • 如果没有,那么使用开放协议(如XMPP)的匿名基于Web的聊天客户端有哪些替代方案?

感谢您的时间.

java xmpp xml-rpc smack

5
推荐指数
1
解决办法
9016
查看次数

图表中的饼图的位置在iText pdf中的java

我正在使用jFreechart创建一个饼图,并在iText中创建的pdf中添加图表.问题是图表始终添加在页面底部而不是最后一行之后.

重新生成错误的示例代码是:

Document document = new Document();
PdfWriter writer;
File file = new File("c:/myPdf.pdf");
writer = PdfWriter.getInstance(document, new FileOutputStream(file));
document.open();

try {
        DefaultPieDataset pieDataset = new DefaultPieDataset();
        pieDataset.setValue("OPT 1", 10);
        pieDataset.setValue("OPT 2", 0);
        pieDataset.setValue("OPT 3", 17);
        pieDataset.setValue("OPT 4", 11);
        JFreeChart chart = ChartFactory.createPieChart3D("Option click count", 
                pieDataset, true, false, false);

        final PiePlot3D plot = (PiePlot3D) chart.getPlot();
        plot.setNoDataMessage("No data to display");
        chart.setTitle(new TextTitle("Option Click Count", new Font("Times New Roman", Font.PLAIN, 14)));

        PdfContentByte pdfContentByte = writer.getDirectContent();
        PdfTemplate pdfTemplateChartHolder = pdfContentByte.createTemplate(225,225);
        Graphics2D graphicsChart = …
Run Code Online (Sandbox Code Playgroud)

pdf location jfreechart itext pie-chart

3
推荐指数
1
解决办法
5149
查看次数

标签 统计

itext ×1

java ×1

jfreechart ×1

location ×1

pdf ×1

pie-chart ×1

smack ×1

xml-rpc ×1

xmpp ×1