如何在现有的Vue项目中嵌入 Blazor项目?

目前官方只提供了angular和react俩种示例,所以本教程将来讲解如何在Vue的现有项目中使用,上期已经做好了react的教材!

准备流程

Vue 项目创建流程

  1. 使用Vue创建一个Demo项目 全部选择默认No即可 然后项目名称就用demo

    npm init vue@latest
    
    cd demo
    npm i
    

    安装完成依赖,在项目的根目录找到index.html 添加以下代码即可

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8">
        <link rel="icon" href="/favicon.ico">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Vite App</title>
      </head>
      <body>
        <div id="app"></div>
        <script type="module" src="/src/main.ts"></script>
        <script src="_content/Microsoft.AspNetCore.Components.CustomElements/BlazorCustomElements.js"></script> 
        <script src="_framework/blazor.webassembly.js"></script>
      </body>
    </html>
    
    

    src\App.vue中添加以下代码

    <script setup lang="ts">
    </script>
    
    <template>
      <main>
        <my-blazor-counter/>   <!--对应razor组件的标签 -->
      </main>
    </template>
    
    

    然后将Vue项目构建

    npm run build
    

    将生成的 dist目录copy到创建的 Blazorwwwroot

Blazor项目创建流程

使用mkdir创建一个webassembly文件夹 ,cd进入webassembly目录,创建 一个空的blazor-webassembly的项目

mkdir webassembly  
cd webassembly
dotnet new blazorwasm-empty 

Microsoft.AspNetCore.Components.CustomElements添加到项目文件中,Microsoft.AspNetCore.Components.CustomElements就是用于在Vue中使用Blazor的一个包, 需要注意的是这个包只有.Net 6Rc和.Net7正式版才能使用

<PackageReference="Microsoft.AspNetCore.Components.CustomElements" Version="7.0.2" />

然后打开Program.cs 修改相关代码

using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;

var builder = WebAssemblyHostBuilder.CreateDefault(args);
// BlazorApp.Pages.Index可以修改成自己的渲染的razor组件
// my-blazor-counter就是上面提到的razor对应的标记 这样就可以在react通过my-blazor-counter去渲染BlazorApp.Pages.Index组件的内容了
builder.RootComponents.RegisterCustomElement<webassembly.Pages.Index>("my-blazor-counter");
builder.RootComponents.Add<HeadOutlet>("head::after");

await builder.Build().RunAsync();

打开webassembly.Pages.Index 修改相关代码

<h1>@Title</h1>

<p role="status">点击数量: @currentCount</p>

<button class="btn btn-primary" @onclick="IncrementCount">点击Blazor组件效果</button>

@code {
    private int currentCount = 0;
    [Parameter] 
    public string Title { get; set; } = "Vue 嵌入 Blazor";
    [Parameter] 
    public int? IncrementAmount { get; set; }

    private void IncrementCount()
    {
        currentCount++;
    }
}
<style>
    button {
        font-weight: bold;
        background-color: #7b31b8;
        color: white;
        border-radius: 4px;
        padding: 4px 12px;
        border: none;
    }

    button:hover {
        background-color: #9654cc;
        cursor: pointer;
    }

    button:active {
        background-color: #b174e4;
    }

</style>
-  需要注意将`Vue`项目build生成的文件拷贝并且覆盖到`Blazor`项目中的`wwwroot`中

运行效果

我们进入到Blazor项目中准备执行blazor项目

dotnet watch

然后查看效果,执行效果如下:

运行基本没有什么问题,这样Blazor就不太会太死板,我们就可以某些在于Blazor有优势的情况就可以去嵌入Blazor实现,在Vue中的使用成本极低,只是引用js,然后通过加入对应的标签就可以直接使用,当然你如果想要俩个项目一块调试的话,可能需要在本地搭建nginx 去将俩个项目一块代理到一个端口,这种情况是比当前的拷贝到wwwroot目录的效果更好的,我现在正在使用这种嵌入的方式在 一个基于react的Ide(opensumi)中嵌入Blazor的组件,实现动态编译代码并且实时的去渲染Blazor组件的效果,这样会很有效提供开发Blazor的效率,也可以在公司现有项目中的Vue 或者react Angular的项目中嵌入Blazor,目前来说嵌入成本很低,而且官方的是支持ServerWebassembly俩种模式的。可以参考实际业务去使用不同模式的,说到这里基本讲解完成了,谢谢大佬的阅读

喜欢Blazor的小伙伴可以加我一块交流

来自token的分享

技术交流群:737776595

推荐一个超级好用的Blazor UI组件 MASA Blazor 开源协议 MIT 商用完全没问题

本文转载于网络 如有侵权请联系删除

相关文章

  • 南医大林凡教授团队Chem. Eng. J.:三明治二维纳米片用于可激活自噬增强的化学动力学疗法

    基于芬顿或类芬顿反应的化学动力学疗法在近年来受到了研究者们的广泛关注,这种依赖于过渡金属的新型肿瘤治疗手段可以高效地将肿瘤细胞的内源过氧化氢转换成高毒性的羟基自由基。但是,肿瘤细胞内高表达的谷胱甘肽会清除所产生的羟基自由基,降低细胞内的活性氧水平,维持氧化还原平衡。另外,肿瘤细胞会保护性地启动自噬,将氧化损伤的细胞器分解成营养成分,从而减少损伤细胞器的积累,延续细胞的生长。因此,肿瘤细胞内的高谷胱甘肽以及保护性的自噬将会严重影响化学动力学疗法的治疗效率。由于天然的多孔性、良好的生物降解能力以及易于修饰等特点,近年来纳米尺寸的金属有机框架在化学动力学疗法中得到了有效的应用。相比于三维的金属有机框架,具有二维结构的金属有机框架由于平面的结构、超薄的厚度以及大的比表面积等优势在化学动力学疗法纳米平台的构建上展现了更高的潜力。但是,目前的二维金属有机框架往往需要从三维层状结构剥离得到,但而用剥离的方法很难保留其原有的性质,从而限制了其稳定性。因此,合理地设计具有二维片状结构的金属有机框架对其在肿瘤治疗领域的应用至关重要。为了克服以上问题,南京医科大学林凡教授和南京林业大学游朝群博士联合东南大学

  • 浏览器指纹解读

    科普文,简单解读浏览器指纹相关内容,如有描述不周望谅解。文章目录浏览器指纹chromedriver指纹隐藏指纹的插件修改指纹的浏览器反爬指纹的生成canvas指纹音频指纹工具站浏览器指纹浏览器指纹很重要,在数据采集、搜索引擎、埋点分析、网站测试等方面都有体现。指纹通常是指服务端的为了做识别而收集的客户端设备信息。即使没有cookie,指纹也可用于识别个人用户或设备。比如常用于记录的指纹Header、Cookie、IP、DNS、UserAgent,Font(字体列表),Language,localStorage、Plugin(插件),Canvas(渲染绘图),WebGL(3D渲染图形),WebVendor(硬件厂商信息),Timezone(时区),WebRTC(web通信API),ScreenResolution(分辨率),Platform(系统),Audio(音频设置和硬件特征指纹),以及enumerateDevices(其他媒体设备)、CPU、GPU信息等等。像用户代理、HTML元素属性、Dom对象操作等都属于基本指纹。 像图形渲染、音频指纹、硬件指纹这些属于高级指纹,生成或者模拟都

  • Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux

    晓查发自凹非寺 量子位报道|公众号QbitAI微软,致力于做最好的Linux发行版。今天,安装Windows10测试版本号19603的用户发现,系统里WSL(Windows中的Linux子系统)的文件夹,居然可以用文件管理器直接访问了,而且是访问根目录。△图片来自Twitter用户“@richturn_ms”(下同)安装完新版的用户发现,在文件管理器左侧出现了Linux的吉祥物小企鹅,如果你安装过不止一个Linux发行版,点击小企鹅图标就能看到各个发行版的文件夹。像Ubuntu,openSUSE和Fedora这些发行版之前在Windows应用商店里都能直接搜索和安装。从Windows1903开始,用户已经可以访问Linux文件,但是在文件管理器左侧导航栏直接提供访问还是第一次。微软早就支持在Windows中安装Linux子系统,但两个系统之间的文件互访却比较麻烦。一个方法是通过命令行访问,用\wsl$实现,比如你安装的是Ubuntu,就在Powershell中输入cd\wsl$\Ubuntu复制另一种方法是在文件管理器中寻找,Linux子系统文件就放在用户的AppData文件夹中。微软

  • 动画 | 什么是2-3树?(修改删除操作方式)

    我们回忆一下AVL树,它在插入和删除节点时,总要保证任意节点左右子树的高度差不超过1。正是因为有这样的限制,插入一个节点和删除一个节点都有可能调整多个节点的不平衡状态。频繁的左旋转和右旋转操作一定会影响整个AVL树的性能,除非是平衡与不平衡变化很少的情况下,否则AVL树所带来的搜索性能提升不足以弥补平衡树所带来的性能损耗。 那有没有绝对平衡的一种树呢?没有高度差也不会有平衡因子,没有平衡因子就不会调整旋转操作。2-3树正是一种绝对平衡的树,任意节点到它所有的叶子节点的深度都是相等的。2-3树的数字代表一个节点有2到3个子树。它也满足二分搜索树的基本性质,但它不属于二分搜索树。2-3树定义一颗2-3树或为一颗空树,或有以下节点组成:2-节点,含有一个元素和两个子树(左右子树),左子树所有元素的值均小于它父节点,右子树所有元素的值均大于它父节点;3-节点,还有两个元素和三个子树(左中右子树),左子树所有元素的值均小于它父节点,中子树所有元素的值都位于父节点两个元素之间,右子树所有元素的值均大于它父节点。2-3树查找元素2-3树的查找类似二分搜索树的查找,根据元素的大小来决定查找的方向。要判

  • go语言环境安装

    语言环境安装 软件的安装常用三种方式 1.在线安装 这种安装方式是通过系统提供的安装工具,自动下载安装包,并自动安装到系统的固定目录下 2.离线二进制安装 通过手动下载官方提供编译好的二进制执行程序压缩包,在本地手动的解压到指定的目录下,并将可执行程序的路径加入到环境变量PATH中,使得在命令行工具中,可以在任意目录中使用该命令行工具。 3.离线源码安装 在本地对源码进行make操作,将其编译为二进制的可执行程序。并将其copy到执行的目录下并加入到PATH环境变量中以上对三种安装的原理做了简单的阐述。go语言环境同样适用。选择喜欢的安装方式,在go语言中文网下载对应的包,安装以上的说明进行安装GOPATH环境变量GOPATH是一个go语言的环境变量,官方给出的说明TheGOPATHenvironmentvariableisusedtospecifydirectoriesoutsideof$GOROOTthatcontainsthesourceforGoprogectsandtheirebinaries.简单的说,就是go语言依赖的一个环境变量,在编译时会在该目录下查找第三方依赖的包在

  • 彻底搞懂Reactor模型和Proactor模型

    在高性能的I/O设计中,有两个著名的模型:Reactor模型和Proactor模型,其中Reactor模型用于同步I/O,而Proactor模型运用于异步I/O操作。想要了解两种模型,需要了解一些IO、同步异步的基础知识,点击查看服务端的线程模型无论是Reactor模型还是Proactor模型,对于支持多连接的服务器,一般可以总结为2种fd和3种事件,如下图:2种fdlistenfd:一般情况,只有一个。用来监听一个特定的端口(如80)。connfd:每个连接都有一个connfd。用来收发数据。3种事件listenfd进行accept阻塞监听,创建一个connfd用户态/内核态copy数据。每个connfd对应着2个应用缓冲区:readbuf和writebuf。处理connfd发来的数据。业务逻辑处理,准备response到writebuf。Reactor模型无论是C++还是Java编写的网络框架,大多数都是基于Reactor模型进行设计和开发,Reactor模型基于事件驱动,特别适合处理海量的I/O事件。Reactor模型中定义的三种角色:Reactor:负责监听和分配事件,将I/O

  • PCL中Kd树理论

     k-d树(k-dimensional树的简称),是一种分割k维数据空间的数据结构。主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索)。01Kd简介K-D树是二进制空间分割树的特殊的情况。用来组织表示K维空间中点的几何,是一种带有其他约束的二分查找树,为了达到目的,通常只在三个维度中进行处理因此所有的kd_tree都将是三维的kd_tree,kd_tree的每一维在指定维度上分开所有的字节点,在树的根部所有子节点是以第一个指定的维度上被分开。K-D树算法可以分为两大部分,一部分是有关k-d树本身这种数据结构建立的算法,另一部分是在建立的k-d树上如何进行最邻近查找的算法。02应用背景比如SIFT算法中做特征点匹配的时候就会利用到k-d树。而特征点匹配实际上就是一个通过距离函数在高维矢量之间进行相似性检索的问题。针对如何快速而准确地找到查询点的近邻,现在提出了很多高维空间索引结构和近似查询的算法,k-d树就是其中一种。   索引结构中相似性查询有两种基本的方式:一种是范围查询(rangesearches),另一种是K近邻查询(K-neighborsearches)。范围查询就是

  • CTF特训(第三天)

    判断是否是已知的CMS或者框架搜索通用漏洞,打开kali进行搜索有没有通用的漏洞,搜索disscuz漏洞searchsploitdiss复制收集更多信息Google、baidu已知的漏洞验证查找常用的POC判断是否为已知的CMS收集更多信息CMS类型CMS版本号是否安装插件以及插件版本补丁类型收集更多信息,如WORDpress有无特殊配置,如他自己生成的版本号。熟悉他使用的版本。Google黑客技巧POC查看是否可以打出结果。本地漏洞裤分享http://www.bugscan.net/source/template/vulns/复制https://www.shentoushi.top/index.php/Go/?url=http://www.cnnvd.org.cn&LinkId=34复制https://www.seebug.org复制http://www.nsfocus.net/index.php?act=sec_bug复制https://www.shentoushi.top/index.php/Go/?url=http://www.0daybank.org&Link

  • Django

    原因:2017年2月17日星期六学习Django加深python理解 说明:自主学习,兴趣爱好,操作系统为mac 状态:updating2.17 简介本博客为记录开发流程项目为pythondjango框架开发的流程及环境的配置为避免python包及语言版本问题造成混乱采用virtualenv数据库采用mysql及navicatformysql未完待续virtualenv搭建背景mac自带python为2.7.10,而有时需要2.7.5或者3.x版本,而pip也是版本混杂,包管理混乱,故而采用virtualenv及virtualenvwrapper搭建独立的开发环境。环境MacOsSierra10.12.3python2.7.10环境搭建Mac自带python2.7.10,其余unix操作系统可直接官网下载安装or包管理器安装sudoeasy_isntallpip#安装python包管理工具pip pipinstallpip-U#升级pip,目前最新为9.0.1复制使用virtualenv的原因如下:使不同应用开发环境独立环境升级不影响其他应用,也不影响全局的python环境可以防止系统

  • 无插件Vim编程技巧

    相信大家看过《简明Vim教程》也玩了《Vim大冒险》的游戏了,相信大家对Vim都有一个好的入门了。我在这里把我日常用Vim编程的一些技巧列出来给大家看看,希望对大家有用,另外,也是一个抛砖引玉的过程,也希望大家把你们的技巧跟贴一下,我会更新到这篇文章中。另外,这篇文章里的这些技巧全都是vim原生态的,不需要你安装什么插件。我的Vim的版本是7.2。浏览代码首先,我们先从浏览代码开始。有时候,我们需要看多个文件,所以,传统的做法是,我们开多个tty终端,每个tty里用Vim打开一个文件,然后来回切换。这很没有什么效率。我们希望在一个Vim里打开多个文件,甚至浏览程序目录。浏览目录的命令很简单:(你也可以直接vim一个目录):E 注意,是大写。于是,你会看到下面这样的界面:这个界面中,你可以用j,k键上下移动,然后回车,进入一个目录,或是找开一个文件。你可以看到上面有一堆命令:【–】到上级目录【D】删除文件(大写)【R】改文件名(大写)【s】对文件排序(小写)【x】执行文件当然,打开的文件会把现有已打开的文件给冲掉——也就是说你只看到了一个文件。如果你要改变当前浏览的目录,或是查看当前浏览

  • Spring Cloud 服务第一次请求超时的优化

    1.问题背景微服务网关netflix-zuul介绍了微服务网关的使用。通过SpringCloud组件构建的服务集群,在第一次请求网关时经常会出现timeout的情况,然而第二次就正常了。SpringCloud版本为Dalston.SR4。 启动涉及到的相关服务:gateway(zuul网关)auth-Service(鉴权服务)user-Service(用户服务)测试的端点接口为:http:/login/oauth/token。服务之间的调用顺序为:gateway->auth-Service->user-Service。网关收到客户端的请求,转发请求到鉴权服务,鉴权服务对用户身份的核验是通过调用用户服,用户服务给鉴权服务返回身份校验的结果,鉴权服务将身份授权信息返回给gateway,gateway将最终的结果response返回给客户端。 三个服务启动后,通过zipkin监控调用链路信息,可以看到第一次和第二次调用情况如下图所示:通过上面两次的链路监控信息截图,可以看到第一次的耗时是第二次的10多倍。遇到某些情况,很可能会出现第一次请求的超时。去官网看了下,主要原因是zuul

  • Struts Interceptor Example

    一下文章节选择《netkillerjava手札》http://www.netkiller.cn/java/struts/interceptor.html7.6.Interceptor7.6.1.Session在web.xml文件中定义Session超时时间<session-config> <session-timeout>30</session-timeout> </session-config> 复制创建拦截器程序packagecn.netkiller.interceptor; importjava.util.Map; importjava.lang.Override; importcom.opensymphony.xwork2.ActionInvocation; importcom.opensymphony.xwork2.interceptor.AbstractInterceptor; publicclassSessionInterceptorextendsAbstractInterceptor{ privatestat

  • Python图像处理基本操作[通俗易懂]

    在Python中进行图像处理可以使用的库有很多,本文主要介绍下面三个:OpenCV(OpenSourceComputerVisionLibrary)PIL(PythonImagingLibrary)skimage(scikit-image)*如下代码的实验环境为JupyterNotebook.欢迎关注白马负金羁的博客http://blog.csdn.net/baimafujinji,为保证公式、图表得以正确显示,强烈建议你从该地址上查看原版博文。本博客主要关注方向包括:数字图像处理、算法设计与分析、数据结构、机器学习、数据挖掘、统计分析方法、自然语言处理。1.OpenCVOpenCV是图像处理中最强大的一个库,它的源代码是由C\C++写成的,所以原版的OpenCV可以与C、C++无缝结合。Python版的OpenCV主要依赖于cv2这个包来实现。1.1imread()importcv2 importnumpyasnp #读入图片:默认彩色图,cv2.IMREAD_GRAYSCALE灰度图,cv2.IMREAD_UNCHANGED包含alpha通道 img=cv2.imread(&#x

  • 微软或泄露大量客户敏感数据

    据BleepingComputer10月19日消息,微软在当天表示,部分客户的敏感信息可能因配置错误的微软服务器而存泄露风险。微软透露,这种配置错误可能导致未经身份验证的访问行为,从而泄露微软和客户之间某些业务文件、交易数据以及客户的个人信息,包括姓名、电子邮件地址、电子邮件内容、公司名称和电话号码。但截至目前的调查,微软称没有任何迹象表明客户帐户或系统已经被入侵,并已将情况通知给受影响的客户。泄露的数据可能与全球6.5万个实体有关虽然微软没有提供有关此数据泄漏的任何其他详细信息,但威胁情报公司SOCRadar在当天发布的博客文章中透露,数据保存在配置错误的AzureBlob存储桶中。SOCRadar声称,它能将这些敏感信息与来自111个国家和地区的65000多个实体相关联,其中存储的文件时间跨度从2017年开始至2022年8月。 SOCRadar分析认为,暴露的数据具体包括了执行证明(PoE)和工作说明书(SoW)文件、用户信息、产品订单/报价、项目详细信息、PII(个人身份信息)以及可能泄露知识产权的数据和文件。微软对SOCRadar关于这一事件的告知和分析表示感谢,但同时指出SO

  • 腾讯云云支付服务商和子商户配置(新版)

    手动同步微信买单服务商到云支付同步操作用户只需要执行简单的微信扫码操作即可将其在微信买单下的所有服务商都同步到云支付。具体操作如下: 登录腾讯云控制台,选择云产品>云支付>服务商管理,进入服务商列表页面。 单击同步买单服务商信息。 使用微信买单服务商助手管理员的微信扫弹出的二维码,单击确认,开始同步。 注意: 必须使用微信买单服务商助手管理员的微信来扫码。 扫码确认后,服务商信息会同步到当前登录(即弹出二维码)的腾讯云账号下。 不要随意截屏并分享该二维码给他人,也不要随意扫他人的二维码,以免发生误同步操作。 每次在微信买单新增服务商后,都需执行以上的扫码操作,将服务商同步到云支付。 修改服务商信息微信买单服务商同步到云支付之后,为了正常使用,您还需进一步配置服务商信息,具体如下: 若使用支付服务,需要配置服务商的微信支付信息和支付宝信息。配置微信支付信息:配置支付宝信息: 配置服务商的基本信息(可选)。配置开发配置信息:详细操作请参见配置服务商。 手动同步微信买单子商户到云支付同步操作用户只需执行简单操作就能将当前登录的云支付账号下所有服务商的所有

  • linux下定时重启tomcat

    #!/bin/sh ./etc/profile pid=`psaux|greptomcat|grep-vgrep|grep-vretomcat|awk'{print$2}'` echo"$pid" if[-n"$pid"] then { echo"===========shutdown================" '/usr/……/bin/shutdown.sh' sleep1 pid=`psaux|greptomcat|grep-vgrep|grep-vretomcat|awk'{print$2}'` if[-n"$pid"] then { sleep1 echo"========killtomcat==============" kill-9$pid } fi sleep1 echo"===========startup.sh==============" '/usr/……/bin/shutdown.sh' } else echo"===========startup.sh==============" '/usr/……/bin/startup.sh' fi复制 注意事项:

  • 分页存储管理方式与分段存储管理方式

    分页存储管理的基本方式:   1.页面和物理块     页面与物理块的关系就像照片与相框,大小要相等   2.地址结构        页号就像是书的页码,位移量就是在此页第几行。   对某特定机器,其地址结构是一定的。若给定一个逻辑地址空间中的地址为A,页面的大小为L,则页号P和页内地址d可按下式求得:      3.页表    在分页系统中,允许将进程的各个页离散地存储在内存的任一物理块中,为保证进程仍然能够正确地运行,即能在内存中找到每个页面所对应的物理块,系统又为每个进程建立了  一张页面映像表,简称页表。         分段存储管理的基本方式:   1.分段     在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息。例如,有主程序段MAIN、子程序段X、数据段D及栈段S等。          如何理解分段:一样拿书做类比,一篇文章在一页上写完的情况很少,这样按页来管理会将原本的文章分隔开,所以我们可以按文章来管理,这样一篇文章可能写很页,我们可以保证其在逻辑上的独立性。   2.段表:     在前面所介绍的动态分

  • [CF1110H]Modest Substrings

    description CodeForces 定义一个正整数\(x\)是合适的当且仅当\(l\lex\ler\),其中\(l,r\le10^{800}\)。 找到一个长度为\(n\)的数字串,使其包含合适的数作为子串的次数最多,\(n\le2000\)。 如果有多解,输出字典序最小的那个。 solution 如果模式串的个数不多,那么直接套用AC自动机上数位dp的方法即可。 关于这一方法可参见[SDOI2014]数数。 现在这个做法的缺陷是要放入的串太多。 考虑简化。 根据数位dp的思想,一个固定位数的数只要达到安全态,后面的数码可以随意选择, 因此我们将\(\gel\)或\(\ler\)的达到安全态的前缀都放入\(AC\)自动机; 设计\(dp\)状态为\(f[i][u]\),表示考虑了前\(i\)位,目前匹配到\(AC\)自动机的节点\(u\)时,已经能够匹配的子串个数。 对于后面的随意数码,由于题目限制长度为\(n\),所以只需要判断其长度是否\(>n-i-1\)即可。 code 实现代码长度居然达到\(3.5k\)... #include<bits/stdc++.h

  • 通过命令查看外网的ip

    tracertcip.cc复制  

  • curl重写php file_get_contents

    file_get_contents在连接不上的时候会提示Connectionrefused,有时候会带来不便;另外,curl的性能比file_get_contents高,所以用curl重写file_get_contents function_file_get_contents($s){ $ret=""; $ch=curl_init($s); curl_setopt($ch,CURLOPT_HEADER,0); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); curl_setopt($ch,CURLOPT_FRESH_CONNECT,true); curl_setopt($ch,CURLOPT_TIMEOUT,0); $buffer=curl_exec($ch); curl_close($ch); if($buffer===false||empty($buffer)){ $ret=""; }else{ $ret=$buffer; } return$ret; }复制  

  • nodejs游戏服务器开发(一)---socket连接

    随着nodejs的火热,计算机的发展,使得游戏服务器也开始转向解释语言了,而有些人喜欢用c++/Lua开发服务器,我也曾如此做过。后来,随着网易开源的pomole游戏服务器框架,go语言的出现,nodejs已经开始在游戏服务器端火起来了!少说无聊的。   由于我是在外面已经购买有一台服务器,所以我的环境是直接布署到上面的!具体怎么布置,我就不多说了,我朋友的博客里有,包括pomole的都有。    游戏服务器,都是建立在socket的,要不然就是类似于socket的协议上。而nodejs自身就支持3种连接方式 socket http socket.io 而我们游戏要用的就以两种为主。 我就只以tcpsocket来说明吧,因为我也不打算做网页游戏,所以就不在那方面多说了! 正式代码: varnet=require('net');     varHOST='yourip'; varPORT=yourport;     //创建一个TCP服务器实例,调用listen函数开始监听指定端口 //传入net.

相关推荐

推荐阅读