默认
发表评论 10
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] 请教MobileIMSDK-web 开辟http接口给外部调用问题
阅读(30905) | 评论(10 收藏 淘帖
你好,我现在部署了MobileIMSDK-web,并且跑起来了,正常运行。

现在我们项目需求是:
nodejs中写一个http接口供外部程序调用
外部程序通过这个http接口可以达到给MobileIMSDK-web登录用户(比如u1)发消息的目的


我是这样实现的:

web处需要开辟http接口供别人调用,这个我写好了,接口中我用一个固定的用户名比如u101登录通过登录后给目标用户u1发送消息
我写的接口中涉及到
IMSDK.loginImpl(loginInfo, IM_SERVER_URL, false);  还有在IMSDK.loginImpl登录成功的回调函数afterLoginSucess调用 IMSDK.sendData(p);

这种方式是可以成功给某个登录用户发送信息的。 但是这种有个问题第二次给该用户u1发信息的时候又要登录一次(自动退出之前那次登录状态),web端我不知道是不是可以保持长连接,这样,每次我在接口中就可以直接发送消息了不用调用登录api了

我这种需求,一般是怎么弄的,可以给个解决方案吗。谢谢

2.第一个问题中我用js写的接口发现不能直接引用IMSDK,必须用页面的方式才不会报错。不知道为什么,就是我写的接口其实是一个页面,他加载的同时,在ready中去调用login send


附:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="format-detection" content="telephone=no"/>
  <meta name="format-detection" content="email=no"/>
  <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0" name="viewport">
  <title>MobileIMSDK-Web版技术特征演示</title>
  <link rel="stylesheet" type="text/css" href="/stylesheets/style2.css" />
</head>
<body>


<!--[if lt IE 8]>
<script src="/javascripts/libs/thirdpart/json3.min.js"></script>
<![endif]-->
<script src="/javascripts/libs/thirdpart/jquery-1.8.3.min.js"></script>
<script src="/javascripts/libs/thirdpart/uuid.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script src="/javascripts/libs/mobileimsdk-client-common.js"></script>
<script src="/javascripts/libs/mobileimsdk-client-sdk.js"></script>
<script type="text/javascript" src="/javascripts/main3.js"></script>

<script>
  $(document).ready(function() {

    login();
    //send();
    //alert('abababab');
    // 在 .ready() 被触发时执行.
});
</script>
{errcode:0,errmsgk}
</body>
</html>

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

推荐方案
评论 10
我们先讨论第一个问题:你是在服务端写了一个http接口想让外界面调用对吗?
引用:JackJiang 发表于 2017-09-01 16:15
我们先讨论第一个问题:你是在服务端写了一个http接口想让外界面调用对吗?

我是在  web的前端那边写了一些 接口,让外面的一个socket程序通过http接口调用进来

router.get('/login', function(req, res, next) {
  res.render('index3', { title: 'MobileIMSDK-Web版hejz' });
  //testint.login(req,res);

});
router.get('/send', function(req, res, next) {
  res.render('index4', { title: 'MobileIMSDK-Web版hejz' });
  //testint.ff(req,res);

});
签名: 试试看签到6个字
引用:JackJiang 发表于 2017-09-01 16:15
我们先讨论第一个问题:你是在服务端写了一个http接口想让外界面调用对吗?

就是  我们的另外一个项目 需要直接用你那个web im,给指定用户发送消息,简单的说就是这个。要怎么做啊
签名: 试试看签到6个字
引用:963536541 发表于 2017-09-01 16:23
就是  我们的另外一个项目 需要直接用你那个web im,给指定用户发送消息,简单的说就是这个。要怎么做啊

你这个接口编写的思路是错的,你用过java或.net写过服务端的接口吗?
引用:JackJiang 发表于 2017-09-01 16:28
你这个接口编写的思路是错的,你用过java或.net写过服务端的接口吗?

写过啊,其他的自定义的协议,
我们是看 如果web那边可以直接通过调用http 接口去调用你的web im发消息不是实现起来很方便吗?
我这种需求你的建议是怎么做呢?能详细说下吗
签名: 试试看签到6个字
引用:963536541 发表于 2017-09-01 16:36
写过啊,其他的自定义的协议,
我们是看 如果web那边可以直接通过调用http 接口去调用你的web im发消息 ...

你的http接口里根本不需要登陆什么的,你别把浏览器端的事跟服务端的事搞混了,你在接口代码里想办法直接调用im的sendData代码,而不是又搞个什么前端页面,先把这个接口写成一个纯rest形式,然后再考虑是在web里调用或者app里调用再或者是其它服务器的服务端来调用,都可以。不知你有没有理解我的意思
引用:JackJiang 发表于 2017-09-01 16:38
你的http接口里根本不需要登陆什么的,你别把浏览器端的事跟服务端的事搞混了,你在接口代码里想办法直接 ...

你好,大神,web 服务器端有没有接口的示例代码啊
不知道怎么入手,nodejs不太熟悉
签名: 试试看签到6个字
引用:963536541 发表于 2017-09-01 16:56
你好,大神,web 服务器端有没有接口的示例代码啊
不知道怎么入手,nodejs不太熟悉

就是你的接口代码(肯定是写在服务端的接口js文件里)调用im的服务端函数,直接send出去,而不是作为个什么客户端又是登陆又是重连什么的,明白了吗
引用:JackJiang 发表于 2017-09-01 17:05
就是你的接口代码(肯定是写在服务端的接口js文件里)调用im的服务端函数,直接send出去,而不是作为个什 ...

嗯,明白。
服务端的接口js写好了怎么映射为url地址啊
签名: 试试看签到6个字
引用:963536541 发表于 2017-09-01 17:17
嗯,明白。
服务端的接口js写好了怎么映射为url地址啊

js都写好了,百度一下nodejs编写http rest接口即可 哈哈
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部