您将使用哪种即时消息系统来扩展网站,并与其客户服务代表进行安全的一对一聊天? [关闭]

2024-01-06

我需要为一个网站实现一个聊天系统,以便该网站的客户可以通过该网站与他们的客户服务代表进行一对一的在线交谈。

所以我需要的是一个能够执行以下操作的系统:

  • 在浏览器中显示代表列表,状态表明他们是否在线
  • 允许用户与代表开始聊天;用户可能会看到一个新的屏幕或弹出窗口,他们可以在其中聊天。
  • 该网站是 HTTP,但聊天需要是 HTTPS,因此我想在现有屏幕上有一个覆盖层来进行聊天,例如就像 Facebook 那样,不太合理
  • 经理需要一些应用程序或网站,他们可以登录并与客户聊天。
  • 显然,如果可能的话,我更喜欢开源解决方案。
  • 我们在大多数事情上都使用 Java,但这并不重要,如果有必要,我不介意使用另一种技术安装系统。

到目前为止我考虑的是:

  • 使用 Jabber/XMPP,使用 AJAX 客户端通过 HTTPS 进行通信;那里有很多,我不确定哪个是最好的,也许JWChat http://blog.jwchat.org/ (截屏 http://ostatic.com/files/images/jwchat_image_3.jpg)。这样做的好处是,银行经理可以根据需要使用桌面客户​​端(例如 Windows 客户端),如果他们整天使用桌面客户​​端,可能会有更好的 UI。
  • “irc”也是一个开放协议,毫无疑问有许多可用的客户端实现;但是我认为没有办法遵守使用 HTTPS(或者可能是其他安全协议)的安全要求。
  • 我做了很多 GWT 编程,在“GWT 应用程序”一书中有一个简单的即时消息客户端实现(demo http://messenger.gwtapps.com/)。也许我可以以类似的风格推出自己的作品?

我的问题:

  • 我没有考虑哪些方法?
  • 你会采取什么方法?例如您使用过的软件哪个对您有用?
  • 如果你要例如使用 Jabber/XMPP(没有更多信息,我有点倾向于该解决方案..)您会考虑哪种 AJAX 客户端?

您错过的一个选项是基于 SIP 的选项。尽管 XMPP 似乎在即时消息传递的特定情况下胜出,但 SIP 和 XMPP 一直被认为有些重叠。我对 SIP 上的 IM 没有任何了解。

我会选择 XMPP 因为:

  • 服务器实现已经成熟,这意味着您可以稍后根据需要更改服务器,而不会影响基础架构的其余部分。

  • 有许多现成的客户端,包括适合您银行客户的客户端 (AJAX) 和适合您银行经理的客户端(桌面)。

  • 通过 XMPP 进行 IM 很常见。 SIP 最常见的情况是 VoIP。如果您尝试获取有关基于 SIP 的 IM 的帮助,大多数 SIP 专家往往对语音的了解远多于 IM。如果您尝试通过 XMPP 获取 IM 帮助,这正是 XMPP 专家一直在处理的问题。这同样适用于文档:SIP 文档往往是围绕 VoIP 的。

  • 在我看来,使用不支持 XMPP 或 SIP 的解决方案在开发方面是一个死胡同。甚至 Google 和 Facebook 现在也在使用 XMPP。 XMPP 现在似乎是面向未来的选择。

  • IRC 是一种多对多聊天机制。有 DCC,但主要是建立一对一的沟通渠道。我认为,如果你确实实现了基于 IRC 的东西,你会花很多时间在你不需要的地方拉出多对多功能,并且不会剩下太多东西,因为你' d 还必须将 DCC 实现替换为 AJAX/XmlHttpRequest/WebSockets 中的某些内容。

  • 如果您最终要定制越来越多的东西,XMPP 设计精良、规范明确,是一个良好的起点。您可以逐步替换 Web 客户端、桌面客户端和服务器,而不会造成中断或令人头疼。

一些可能的警告:

  • XMPP服务器want与其他人交谈,因为该协议被设计为联合的。您需要绝对确保这种情况不会发生。 XMPP 通常在客户端->服务器上使用 5222,在服务器服务器上使用 5269,但也使用 SRV。

  • 这同样适用于您选择的任何客户。您可能需要减少它,以确保用户无法使用更通用的功能,例如从名册中添加和删除用户(更糟糕的是,GTalk 等外部人员设法迷惑并可能钓鱼您的客户) 。

我认为 XMPP 可能存在的两个最大问题是:

  1. 在 XMPP 服务器上管理用户和名册,因为它们主要是为一般用途而不是沙盒环境而设计的。服务器倾向于期望并允许客户端注册、设置密码等,而您可能希望既防止这种情况发生又自己管理一切。

  2. 删除所有可能导致问题的额外功能。您可能不希望您的客户互相交谈、传输文件等。

早在 2002 年,我就已经建立并维护了一个私有的多站点、多服务器、私有 XMPP 安装,涵盖了许多连接的客户。我要做的主要事情是:

  1. 如上所述,减少服务器实现。我使用 jabberd 1.x,它使用 XML 文件进行配置。我通过提供已预先填充的名册 XML 文件将其与我们的用户数据库集成。理论上,用户可以弄乱他们的名单,但他们会被服务器覆盖。实际上,这并没有发生,因为客户端软件阻止了它。您可能需要比这更进一步,但我相信现在有足够灵活的服务器来允许它。

  2. 获得一个可以自动预配置且不会混乱的客户端实现。我选择并修补了一个特定的客户端 (Psi),以添加“锁定”模式,该模式可用于删除所有与配置相关的 UI 元素,包括名册管理选项。配置由服务器自动完成。然后,用户将获得一些简单的东西,他们不需要配置并且不会出错。这样的事情可能对你的银行经理有用——它将节省很多支持。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

您将使用哪种即时消息系统来扩展网站,并与其客户服务代表进行安全的一对一聊天? [关闭] 的相关文章

  • 在内核模块中监听 netlink 广播

    SELinux 模块向任何侦听套接字发送 netlink 广播 我想知道是否可以从另一个内核模块中监听 netlink 广播 来自 SELinux netlink 代码 netlink broadcast selnl skb 0 SELNL
  • Ruby On Rails,周数不正确 (-1)

    我需要当前周数 如果我没有完全弄错的话 现在是第 51 周 但是 当在控制台中测试它时 我得到了这个 Time now gt 2013 12 19 11 08 25 0100 Time now strftime U gt 50 Date t
  • 如何从phonegap获取图片到远程XPage?

    我在 iPad 上构建了版本 1 6 的 Phonegap 应用程序 将 ulr 设置为 Domino 服务器上的 XPage 现在我的问题 当我在 iPhone 上拍照并将其上传到我的 XPage 时 使用该功能takePicture 返
  • 如何记录安全访问审核

    我有以下弹簧安全配置
  • android 中具有相应标签的单选组的 TableLayout

    我正在创建一个反馈输入表单 它可以让用户从单选按钮中进行选择 如下图所示 因此 我采用了表格布局 并在第一行中添加了带有固定宽度的文本视图的表格行 并在其余行中添加了带有固定宽度的单选按钮的文本视图 这是布局代码
  • 从超类访问私有变量(JAVA)

    好吧 我整个学期都在学习java 并且认为我对继承和超 子类有了清晰的了解 今天我们的任务是创建一个名为敌人的超类 以及不同类型敌人的子类 我做的一切都很好 我的所有子类都在工作 但是当我回去阅读我们必须遵循的指南时 我发现了这句话 超类的
  • Java 8 javax.net.ssl.SSLPeerUnverifiedException:对等点未经过身份验证,但不是 Java 7

    我在将应用程序从 Java 7 切换到 Java 8 时遇到问题 更改 JDK 后 我开始收到此 SSLPeerUnverifiedException 改回Java 7 也不例外 我发现这个问题 Java 7 的 SSL 连接失败 http
  • 从 SSL 证书中提取序列号

    客户端和服务器持有匹配的证书 当服务器发送通信时 它会解码证书中的序列号并将其传递给客户端 然后 客户端可以从其证书副本中获取序列号 并将其与服务器提供的序列号进行比较 这些应该匹配 证书中序列号的字符串表示形式显示如下 58 17 9B

随机推荐

  • 针对大量出站 HTTP 请求优化 Node.js?

    我的 Node js 服务器有时会变得缓慢或无响应 甚至在尝试连接到服务器时偶尔会导致 503 网关超时 我 99 确定 基于我运行的测试 这种延迟具体是由于我使用节点oauth模块 https github com ciaranj nod
  • 使用 jQuery 循环 XML

    我有一些基本代码 可以循环处理从 Adob e RoboHelp 用于我们的帮助文档 生成的一些 XML 这工作正常 但由于主题可以根据作者的需要嵌套多次 因此我需要一种更好的方法来循环此 XML 而不仅仅是嵌套 each loops XM
  • Python:为什么 print 语句和 subprocess.call() 输出不同步?

    我正在运行以下代码 将其称为batch py for config in keystoneConfig cmdlist generate cmd list config print join cmdlist subprocess call
  • 测试不通过 Maven 运行?

    当我在 Maven 中运行测试时 我得到以下信息 INFO INFO T E S T S INFO INFO INFO Results INFO INFO Tests run 0 Failures 0 Errors 0 Skipped 0
  • UITableView 方法“indexPathForRowAtPoint:”的奇怪行为

    如下面的代码所示 当tableview被拉伸 从不向上滚动 时 NSLog tap is not on the tableview cell 总是会被称为 因为我认为indexPath将永远为零 但是当我点击节号大于 2 的节标题中的头像时
  • Objective-C 在另一个类上调用函数?

    这是我的 Objective C 课程 AppDelegate SomeScript 我如何从应用程序委托或任何其他类调用 SomeScript 类上的登录函数 我假设loggedIn是一个不带参数的实例方法 首先 几个术语问题 它们不是函
  • QLabel 中的文本滚动(字幕)

    我正在学习小部件选框标签 https www linux apps com p 1132075 class include WidgetMarqueeLabel h include
  • Backbone.js 将视图附加到多个元素

    我对骨干很陌生 所以我这样做可能违反了骨干的本质 感谢建议 我做了一个墙式系统 所以有一个表格可以用来在墙上发布更新 每次更新都可以有评论 我一次显示 10 个更新 所以有10个评论表 所以我有一个看法 CommentForm Backbo
  • vscode API:获取行最后一个字符的位置

    跟进这个仍然悬而未决的问题 https stackoverflow com questions 57099341 vscode extenstion how to get position of last character of line
  • 使用Picasso设置背景资源

    我知道 Picasso 是一个很棒的图像库 Picasso with context load http i imgur com DvpvklR png into imageView 使用此代码我可以将图像加载到图像视图 但是是否可以使用
  • 如何通过 Typescript (Angular2) 检测页面上任意位置的点击[重复]

    这个问题在这里已经有答案了 如何通过 Typescript 检测页面任意位置的点击 在 AngularJS 2 中 您可以范围HostListener到文档 import Component HostListener from angula
  • 从另一个线程访问单例对象

    我使用调用服务方法 ThreadPool QueueUserWorkItem o gt service Method arg1 arg2 服务有对象 loggingService 我正在使用 Spring Net private reado
  • Python 检查损坏的视频文件(捕获 OpenCV 错误)

    我正在寻找一种方法来检查视频文件是否已损坏 我正在使用 cv2 Python 的 OpenCV 来加载视频 如果视频文件已损坏 我想跳过该文件并继续处理下一个文件 我找到了这个堆栈溢出问题 https stackoverflow com q
  • 运行“ng test”时,Jasmine 测试列表未显示在浏览器输出中

    我继承了几年前首次开发的 Angular 应用程序 我被赋予的任务之一是让我们的测试继续进行 因为在过去的一年或更长时间里没有进行过测试 这最初是 Angular 2 应用程序 已更新至 2 3 1 左右 目前我们无法进行进一步的更新 因为
  • android 数字格式异常

    我得到以下异常 java lang NumberFormatException 无效的整数 当您尝试将值存储到共享首选项中而输入字段中尚未插入任何内容时 就会发生这种情况 这是因为我将输入解析为 int 因为我需要对数字进行减法 这不是什么
  • 标签使段落高度变大

    我有以下小提琴 http jsfiddle net tompazourek sn5jp http jsfiddle net tompazourek sn5jp p some normal sized text p p some p
  • 如何在 ForEach Swiftui 的结构列表中使用枚举?

    我希望利用 ForEach 中项目的索引 这是关于我发表的帖子here https stackoverflow com questions 62373658 how to align the an image on top of a but
  • 用PHP检查浏览器的语言?

    如何使用PHP检查用户浏览器的语言 我需要为美国和英国的人们显示不同的页面 我尝试了以下代码但没有成功 我为美国和英国的人们运行了一个特定的代码 可能只是区分大小写的问题 eregi en us 或 preg match en us i 应
  • 使用 Microsoft Access 查询结果中的行号

    我总是在 sql server 中使用此查询来获取表中的行号 SELECT FROM SELECT Row number OVER ORDER BY myidentitycolumn RowID FROM mytable sub WHERE
  • 您将使用哪种即时消息系统来扩展网站,并与其客户服务代表进行安全的一对一聊天? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要为一个网站实现一个聊天系统 以便该网站的客户可以通过该网站与他们的客户服务代表进行一对一的在线交