我可以通过Javascript建立套接字连接

时间:2017-03-21 17:12:34

标签: javascript sockets google-chrome websocket client

我想做什么

在浏览器上建立与服务器的简单套接字连接。我想不通过套接字连接发送任何头信息。

问题

看起来我无法使用不发送标头数据(Is there a way to do a tcp connection to an IP with javascript?)的javascript建立套接字连接。

我想也许我可以使用Chrome扩展程序建立连接,但看起来套接字API仅适用于Chrome应用程序(Google Chrome Socket API in extensions)。

我想我可能需要创建一个本机应用程序,它将通过浏览器使用Native Messaging发出的请求建立套接字连接。

无论如何我能做到这一点还是我运气不好?

3 个答案:

答案 0 :(得分:0)

通过浏览器的原始套接字连接包含在安全问题中。用户可以很容易地操作,以允许运行不应该运行的东西。

TCP和UDP套接字API W3C编辑的草案2016年1月20日

就在这里。

http://raw-sockets.sysapps.org/

此处的Mozilla API信息:https://developer.mozilla.org/en-US/docs/Archive/B2G_OS/API/TCPSocket "此API仅适用于特权或认证应用的Firefox操作系统。"

如果使用原始TCP连接。我建议

(1)将PHP下载到本地计算机上。 PHP内置了开发人员Web主机,因此您可以使用浏览器作为GUI运行所需的PHP应用程序。

(2)下载node.js。

答案 1 :(得分:0)

您只是需要实现它,并且理解您正在开箱即用于从安全问题创建的基于浏览器的普通脚本,这并不需要实现它,这意味着用户/客户需要手动安装。

如果您必须在客户端使用Chrome浏览器,则需要进行-extension-correction webapp。您可以作为开发人员制作一个可以在自己的计算机上使用的工具。

https://developer.chrome.com/extensions/getstarted https://developer.chrome.com/apps/first_app

  

加载扩展名#

     

您从Chrome网站下载的扩展程序   商店打包为.crx文件,非常适合发行,   但对发展来说并不是那么好。认识到这一点,Chrome为您提供了一个   加载工作目录以进行测试的快速方法。我们来做   现在。

     

在浏览器中访问chrome://扩展程序(或打开Chrome菜单   单击Omnibox最右侧的图标:菜单图标   是三个水平条。并在“工具”菜单下选择“扩展”   到达同一个地方)。

     

确保右上角的“开发者模式”复选框   已经过检查。

     

点击加载解压缩的扩展程序...到弹出文件选择对话框

     

导航到您的扩展文件所在的目录,以及   选择它。

     

或者,您可以将目录拖放到您的目录中   扩展文件存在于浏览器中的chrome://扩展中以加载   它

     

如果扩展程序有效,它会立即加载并激活!   如果它无效,则会在顶部显示错误消息   页。纠正错误,然后重试。

这可以确保非开发者不会加载不符合正常安全问题的扩展程序。

使用网页上的脚本与扩展程序进行通信。

  • 可以通过消息传递完成... https://developer.chrome.com/extensions/messaging
  • 扩展程序可以直接将内容添加到网页上可用的网页上。例如,当网络摄像头脚本读取它认为是网络摄像头的内容时,扩展名将网络摄像头图像替换为静态图像,而是获取静态图像,这就解释了为什么我看起来像是网络摄像头上的空间外星人。虽然我没有创建扩展来做到这一点,但我只修改了现有的扩展来替换获取网络摄像头图像的功能,以获取静态图像。

答案 2 :(得分:-2)

您可以使用SignalR,它是javascript库(JQuery插件),它使您可以从浏览器打开Web套接字到服务器。请检查以下链接:

https://blog.3d-logic.com/2015/03/29/signalr-on-the-wire-an-informal-description-of-the-signalr-protocol/

http://blog.teamtreehouse.com/an-introduction-to-websockets

https://github.com/SignalR/SignalR