精华内容
下载资源
问答
  • mosquitto与web连接

    千次阅读 2019-04-17 11:34:49
    mosquitto 作为一个消息代理, 客户端与 mosquitto 服务端的通信时基于 MQTT 协议的, 而现在的主流 web 应用时呈现在浏览器中, 这意味着用户与服务端只能通过 HTTP 或者 HTTPS 这类浏览器能理解的协议传输, 所以后端...

    1.通过http/https连接mosquitto

    mosquitto 作为一个消息代理, 客户端与 mosquitto 服务端的通信时基于 MQTT 协议的, 而现在的主流 web 应用时呈现在浏览器中, 这意味着用户与服务端只能通过 HTTP 或者 HTTPS 这类浏览器能理解的协议传输, 所以后端还要建立一个代理层, 将 HTTP 协议传输的内容解析一下以 MQTT 协议发送到 mosquitto, 最后再由 mosquitto 发送到硬件端.

    2.WS 协议连接mosquitto

    在浏览器支持的协议中, 还有一个适用于长连接的 WS 协议,.如果客户端直接通过 websocket 连接到 mosquitto 端, 那么就不需要中间的后端代理层. 后端只需要一个推送服务和控制系统就可以实现对客户端的监听, 控制, 推送(当然, 如果业务量巨大, 业务逻辑复杂, 代理层还是有必要的, 因为这样不但可以为 mosquitto 过滤一些不必要的业务, 而且可以做一些数据统计, 设计事件钩子).

    在编译 mosquitto 和它的验证插件 mosquitto-auth-plug 的时候, 我注意到 mosquitto 有一个监听的 9001 端口, 事后查了一下, 发现 mosquitto 开放的这个端口是支持直接与客户端进行 websocket 通信的.

    启用 mosquitto websocket 模式

    其实纯粹的 MQTT 服务器是没有这个功能的, mosquitto 需要在编译的时候设置 configure.mk

    WITH_WEBSOCKETS := yes

    所幸的是, eclipse 官方的 docker 镜像 已经支持了 websocket 通信方式. 只需要在 mosquitto.conf 中启用:

    port 1883
    listener 9001
    protocol websockets

    使用 paho-mqtt.js 通过 websocket 与 mosquitto 通信

    eclipse 提供了用于 浏览器客户端利用 javascript 和 mosquitto 进行 websocket 通信的 paho-mqtt.js, 这是这个 js 库的文档: Paho.MQTT DOC.

    客户端与服务端的双通道通信

    我们假设有客户端用户为 client, 服务端用户为 server. 为他们分配的主题与权限为:

     id | username |      topic         | rw 
    ----+----------+--------------------+----
      1 | client   | /p/client/upload   |  2
      2 | server   | /p/client/upload   |  2
      3 | client   | /p/client/download |  1
      4 | server   | /p/client/download |  2

    那么 server 和 client 均可以在 /p/client/upload 读写. 我们约定只有 client 在 /p/client/upload 写, server 只读 /p/client/upload, 这个 topic 是用于 client 向 server 发送消息.

    对于 topic /p/client/download, server 可读可写, client 只读, 这个 topic 是用于 client 接受 server 向下推送的消息, 具体的逻辑如下:
    ![图片描述

     

    注意这里的 client 是对 /p/client/upload 具有可读可写权限的, 意味者它可以读取来自 /p/client/upload 的信息, 但是实际上这里没有人往这个主题发布消息(除非 client 自己往这里发消息), 所以 client 拥有可读权限也没有关系.

    客户端的 javascript 通信例子

    建议看一下这篇文章: Using MQTT Over WebSockets with Mosquitto, 它比较详细地介绍了客户端通过 websocket 于 mosquitto 服务器通信的方式.
    比如对于 client.html:
    先引入 paho-mqtt.js, 这里我们先用 cloudflare.com CDN上的这段 js:

    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.2/mqttws31.js"></script>

    下面是创建客户端 websocket 的例子:

    var mqtt;
    var host = 'mosquitto';
    var port = 9001;
    
    // onConnect 事件
    function onConnect() {
        console.log('connected.');
        var raw_message = 'Hello World!';
        message = new Paho.MQTT.Message(raw_message);
        message.destinationName = '/p/client/upload';
        console.log('sending message: ' + raw_message );
        mqtt.send(message);
    
        // 订阅 download topic
        var subOptions = {
            qos: 1,
            onSuccess: onSubscribe
        };
        mqtt.subscribe('/p/client/download', subOptions);
    }
    
    // 订阅主题成功事件
    function onSubscribe(context) {
        console.log('subscribe success');
        console.log(context);
    }
    
    // 连接失败事件
    function onFailure(message) {
        console.log('connect failed.');
    }
    
    // onMessageArrived 事件
    function onMessageArrived(message) {
        console.log('new message arrived...');
        console.log(message.payloadString);
    }
    
    
    // 建立 MQTT websocket 连接
    function MQTTconnect() {
        console.log('connecting to ' + host + ':' + port);
        mqtt = new Paho.MQTT.Client(host, port, 'clientid');
        var options = {
            timeout: 3,
            onSuccess: onConnect,
            onFailure: onFailure,
            userName: 'client',
            password: '123456',
            mqttVersion: 4
        };
        mqtt.onMessageArrived = onMessageArrived;
        mqtt.connect(options);
    }

    这里我们利用 paho-mqtt.js 新建了一个 mqtt, 然后绑定 onSuccess(连接成功), onFailure(连接失败) onMessageArrived(消息到来)等事件, 之后用 options 里的配置连接到远程的 mosquitto 服务器. 连接成功后, client 向 server 发送一条消息到 /p/client/upload topic, 通知服务端已经建立连接. 发送之后 mqtt 又订阅 /p/client/download, 准备接受来自服务端的信息.

    比如, 服务端可以这样向客户端推送消息:

    import paho.mqtt.publish as publish
    import time
    
    HOST = 'mosquitto'
    PORT = 1883
    
    
    if __name__ == '__main__':
        client_id = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
        publish.single(
            '/p/client/download', 'hello mqtt', qos=2, hostname=HOST, port=PORT,
            client_id=client_id, auth={'username': 'server', 'password': '123456'})

    这就是基于双通道的服务端于客户端通信

    客户端与服务端的单通道通信

    单通道通信原理类似, 但是由于客户端可能有多台设备, 比如手机端, 微信小程序端, PC 端. 那么身份的验证不能直接由 mosquitto 确定, 应该在消息体内确定. 比如我们用 json 作为消息的承载方式. 消息体可以这样:

    {
        "timestamp": "1539141568",
        "client_id": "1001001",
        "message_type": "ping",
        "data": {"detail": "content"},
        "token": "auth_token"
    }

    这里应该按照具体的业务需求进行鉴权设计.

    展开全文
  • Web连接cube,并将CellSet转成DataTable

    千次阅读 2016-02-05 10:54:34
    Web连接cube,并将CellSet转成DataTable   1. 正常情况下我们使用ssrs连接cube,但是由于ssrs的局限性以及其它需求的存在,我们希望直接通过web应用程序来连接cube,就像直接连接sqlserver、oracle等数据库一样...

    Web连接cube,并将CellSet转成DataTable

     

    1.        正常情况下我们使用ssrs连接cube,但是由于ssrs的局限性以及其它需求的存在,我们希望直接通过web应用程序来连接cube,就像直接连接sqlserver、oracle等数据库一样。

     

    2.        如果要通过web程序连接ms的cube的话,我们需要通过一个额外的组件即ADOMD.NET来进行连接,该组件可在C:\Program Files(x86)\Microsoft.NET\ADOMD.NET\10中找到,文件名为Microsoft.AnalysisServices.AdomdClient.dll,引用后可通过using Microsoft.AnalysisServices.AdomdClient命名控件来调用其下的对象和功能。

     

    3.        Microsoft.AnalysisServices.AdomdClient下主要包含以下对象

    l  AdomdConnection

    l  AdomdCommand

    l  AdomdDataAdapter

    l  AdomdDataReader

    l  CellSet等

     

    4.        以上对象的使用参考System.Data.SqlClient名称空间下的SqlConnection等,一般只使用AdomdCommand的ExecuteCellSet()方法,获取CellSet,然后再转成DataTable

     

    5.        转成DataTable的方法如下

            /// <summary>
            /// CellSet转成DataTable(只能转换一维二维数据)
            /// </summary>
            /// <param name="cs"></param>
            /// <returns></returns>
            public DataTable ToDataTable(CellSet cs)
            {
                DataTable dt = new DataTable("ResultTable");
                DataColumn dc = null;
                DataRow dr = null;
    
                //列名或行名
                string name;
                //添加行数据
                int pos = 0;
    
                if (cs.Axes.Count > 0)
                {
                    //当为二维数据时,第一列:必有为维度描述(行头)
                    if (cs.Axes.Count == 2) dt.Columns.Add(new DataColumn("Description"));
    
                    //生成数据列对象
                    foreach (Position px in cs.Axes[0].Positions)
                    {
                        dc = new DataColumn();
                        name = "";
    
                        foreach (Member m in px.Members) name = name + m.Caption + " ";
                        dc.ColumnName = name;
    
                        dt.Columns.Add(dc);
                    }
                }
    
                if (cs.Axes.Count == 1)
                {
                    //一维数据转换为DataTable
                    int rowCount = cs.Cells.Count / dt.Columns.Count;
                    for (int rowIndex = 0; rowIndex < rowCount; rowIndex++)
                    {
                        dr = dt.NewRow();
    
                        for (int columnIndex = 0; columnIndex < dt.Columns.Count; columnIndex++)
                        {
                            dr[columnIndex] = cs[pos++].FormattedValue;
                        }
    
                        dt.Rows.Add(dr);
                    }
                }
                else if (cs.Axes.Count == 2)
                {
                    //二维数据转换为DataTable
                    foreach (Position py in cs.Axes[1].Positions)
                    {
                        dr = dt.NewRow();
    
                        //维度描述列数据(行头)
                        name = "";
                        foreach (Member m in py.Members)
                        {
                            name = name + m.Caption;// +"\r\n";
                        }
                        dr[0] = name;
    
                        //数据列
                        for (int x = 1; x <= cs.Axes[0].Positions.Count; x++)
                        {
                            dr[x] = cs[pos++].FormattedValue;
                        }
    
                        dt.Rows.Add(dr);
                    }
                }
    
                return dt;
            }


    展开全文
  • IDEA Web连接sqlServer

    千次阅读 2019-06-22 21:40:41
    此之前都是用C#+VS来写网页,这两天使用JAVA+IDEA来写,以下来记录以下成果 参考资料 IDEA创建Web项目 IDEA连接Sql Server数据库 ...我们建立一个 Project,在该Project中我们建立一个Web Application modul...
    主题:IDEA Web连接sqlServe

    此之前都是用C#+VS来写网页,这两天使用JAVA+IDEA来写,以下来记录成果

    参考资料
    1. IDEA创建Web项目
    2. IDEA连接Sql Server数据库
    3. 利用JSP和HTML来读取连接数据的数据
    参考以上资料就可完成搭建,以下是自己简单介绍,总结

    第一步:IDEA创建Web项目

    在这里插入图片描述

    1. 我们建立一个 Project,在该Project中我们建立一个Web Application module,作为serve side

    2. Web Application module中在建立两个文件夹
      - classes: 存放编译后输出的classes文件
      - lib: 存放第三方jar包

    3. 模块可以依赖于项目中的sdk、jar文件(库)或其他模块,我们的需要依赖于lib文件
      在 FILE --> Project structure --> Module --> Dependency: ‘+’ --> ‘Jars or directory’ 添加lib文件路径

      在 FILE --> Project structure --> Module --> Path : Output path 与 Test output path 更改为classes文件路径

    4. 连接Tomcat
      run --> Edit Configurations–>’+’–>点击Tomcat(Local)–>点击Fix


    第二步:IDEA 连接SQL SERVER

    需要用到 — SSMS(2017,自己下载),SQL SERVER configuration Manager,服务(这两个自带,win+s 呼叫小娜)

    1. 在SSMS的操作

    • 用Windows身份登录一个服务器A去创建一个用户

             对象资源管理器 ->安全性 -> 右键登录名:新建登录名
      
    • 设置用户名及密码 ,服务器角色全部勾选

    2. 在SQL SERVER configuration Manager操作

    • SQL server 网路配置 --> 启用TCP/IP且P下的所有IP启用,最后的TCP端口改成1433

    3. 在服务上的操作

    • 找到服务A,将他重启

    4. 在IDEA上的操作

    • DataBase -->DataSource --> ‘+’ --> Mircosoft SQL Server

        填写Port User Password【有可能需要下载drive ,下面有提示】
      
    • 点击Test Connection,然后就可以操作数据库了


    第三步:写代码读取数据库代码

    1. 下载sqljdbc4-2.0JAR包,到lib文件
    2. 编辑 Index.Jsp
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ page import="java.sql.*" %>
    <html>
    <%
    try
    {
      Connection c=null;
      ResultSet resultSet=null;
      Statement sql=null;~
    // 一丶加载驱动
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    //二丶获取数据库连接对象
    c = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=IDEA_TestDB",User,PWD);
    //三丶创建SQL命令
    sql = c.createStatement();
    //四丶执行
    resultSet = sql.executeQuery("select * from  Student");
    //五丶输出
        while(resultSet.next())
       {
    %>
      <td><%=resultSet.getInt(1)%>  </td>
    <%
        }
      }
    catch(Exception e){}
     %>
     </html>
    展开全文
  • java web连接sql server 2017出现com.microsoft.sqlserver.jdbc.SQLServerDriver

    java web连接sql server 2017出现com.microsoft.sqlserver.jdbc.SQLServerDriver

    起初在Java web中 在Java代码中使用jdbc链接数据库 没有出现任何错误,但是在java web中链接 就会报错

    然而 这样子 查看 jar包 又在里面 但是 连接还是 会报com.microsoft.sqlserver.jdbc.SQLServerDriver错误
    直接 把你的jar包  拖过来 放到 lib中 然后 你的tomcat服务器  上面的 两种 方式 都是可以的  然后 在点击 restart 就可以再次运行了

    展开全文
  • java web 连接mysql数据库

    千次阅读 2016-11-25 19:23:09
    介绍一下JSP怎么通过tomcat,连接后台的mysql数据库。
  • 在Windows 2000 Server时代,运用其内置的“终端服务”功能使我们可以对服务器...而Windows Server 2003本身实际上又新增了另一个更为便捷的另类终端控制方法——“远程桌面Web连接”。 <br /> 使用“远程
  • Web 连接远程桌面(3389登陆器) 网页版 转载于:https://blog.51cto.com/obnus/489596
  • JAVA WEB 连接数据库代码

    千次阅读 2016-10-29 23:01:26
    jdbc:mysql://localhost:3306/BookDB 即为连接你本地数据库的url,如果你在安装数据库中没有做其他改动就不用更改默认的3306端口。   配置eclipse+struts见: 点击打开链接 数据库操作命令见: 点击打开链接
  • web 连接 elasticsearch 中的问题

    千次阅读 2017-07-19 11:58:12
    通过安装head插件,可以通过地址...javaclient连接未经配置的es,会报出None of the configured nodes are available异常。解决办法是配置2个参数。这两个参数可以在es_home/config/elast
  • java web连接数据库sql server2008

    千次阅读 2016-04-17 21:14:22
    2.在新建的web项目中导入sqljdbc4.jar(2008版本以上的数据库用这个,这个去官网上下吧,安装到一个你指定的路径下)项目邮件-》bulid path->add extrenal.....打开sqljdbc4.jar。把sqljdbc4.jar再复制到项目下的WEB...
  • JAVA web连接MySQL报错添加SSL设置

    千次阅读 2017-08-23 08:58:03
    Java使用mysql-jdbc连接MySQL出现如下警告: Establishing SSL connection without server's identityverification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+requirements SSL ...
  • 现在在做一个项目,其中编写了数据库连接及操作的类。 1、ConnDB类。 package com.wgh.tools; import java.io.InputStream; //导入java.io.InputStream类 import java.sql.*; //导入java.sql包中的所有类 import ...
  • java web 连接数据库 http 错误 500总结

    千次阅读 2012-01-31 16:51:26
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-a
  • 对于ios的应用常会用到通过web打开app,或者再web页面打开app在appstore的的下载页面。 1.如何实现ios浏览器请求网页提示相应的app是否安装如下图 使用ios6之后支持的 smart app banner即可实现具体实现方法 html...
  • 序言: 好吧,第一次写CSDN博客,其实从一开始学计算机,到现在,快两年了,中间就不断的遇到问题,基本通过上这博客看的 ...写web时,需要用到数据库的数据,参着网上的方法自己写了一个数据库连接类,...
  • 如何实现Windows 2003远程桌面Web 连接

    万次阅读 2008-02-14 10:57:00
     注意在使用时,不要直接关掉“远程桌机Web连接”的浏览器窗口,否则远程桌面相当于“断开”,并未注销。    4、终端服务配置  请依次单击“开始”和“控制面板”,双击...
  • * 获取数据库连接 * @author lcg * @date 2014年9月24日11:48:49 * @return java.sql.Connection; */ public static Connection getConnection(){ // com.mysql.jdbc.Driver try { Class.forName(...
  • 建立了一个java web工程,使用spring。创建了一个DBControl类,在服务器启动时加载,定义如下 在init方法中连接sqlite数据,代码如下 public void init(){ try { System.out.println("DBControl init")...
  • 你用过远程桌面连接吗? 我相信很多人都用过了,远程桌面现在可以用在Window Xp和Windows 2003 Server上面。而这两者都是会自己带有远程桌面连接,位置是:开始|所有程序|附件|通讯|远程桌面连接你可以看到熟悉的...
  • Java web 服务器连接MySQL数据库代码

    千次阅读 多人点赞 2020-03-16 17:23:42
    本文内容分为两部分,分别是java web连接MySQL数据库,java web对数据库进行基本数据操作。附加代码。
  • WEB服务器-长连接与短连接

    千次阅读 多人点赞 2019-04-24 23:51:29
    WEB静态服务器 长连接与短链接 什么是长连接、短连接? 在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型...
  • Web连接RabbitMQ

    千次阅读 2018-11-13 11:06:56
    最近项目需要在Web端中后台应用中作为消费者连接RabbitMQ,以动态接收业务系统生成的最新数据。 RabbitMQ官方有nodejs库(http://www.rabbitmq.com/tutorials/tutorial-one-javascript.html),但经测试该库...
  • Web Part 教程--Web Part 连接

    千次阅读 2009-01-21 16:45:00
    整个教程连接Web Part 教程--简介Web Part 教程--自定义 Web PartWeb Part 教程--Web Part 连接Web Part 教程--深入理解 Web Part Manager & Zone 三、Web Part 连接 连接允许 Web Part 之间交换数据,是门户框架...
  • Web前端连接后台服务

    千次阅读 2019-10-06 17:42:55
    Web前端连接后台服务 用的是servlet接口连接,servlet是中间控制层。 servlet: Servlet任务 读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端...
  • 本文讲述SharePoint excel service web part 连接到 filter web part的一个简单应用场
  • Ajax实现Web连接

    千次阅读 2016-03-26 21:34:40
    这篇文章写的很好Web 通信 之 长连接、长轮询(long polling),受益匪浅。 1.什么是长轮询,长连接用通俗易懂的话来说,就是客户端不停的向服务器发送请求以获取最新的数据信息。这里的“不停”其实是有停止的,...
  • web2py 连接数据库

    千次阅读 2018-01-25 11:24:11
     web2py自带的就是这个数据库,连接语句是每个项目中db.py中的语句:  db = DAL("sqlite://storage.sqlite") (2)连接MySql  修改db.py的代码:   db = DAL('mysql://:@localhost/')  原文地址:...
  • web页面视频连接

    千次阅读 2017-09-20 09:33:25
    视频连接地址: 优酷超清地址 value="http://player.youku.com/player.php/sid/XODA3MzU4ODg4/v.swf" />   腾讯超清地址 value="http://static.video.qq.com/TPout.swf?vid=n01393q6qvo&auto=0" /> &...
  • Python如何连接web数据库

    千次阅读 2019-02-21 21:30:16
    提到Python开发web应用,就一定少不了数据库的使用,那么Python是如何操作web数据库的呢?今天我们一起来学习一下,本文基于Django为基础开发框架,Django项目要操作数据库,首先要和数据库建立连接,才能让程序中的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 69,572
精华内容 27,828
关键字:

web连接