当前位置: 首页 > 知识库问答 >
问题:

在Angularjs中连接客户端到套接字

方飞白
2023-03-14

我对套接字协议非常陌生,我肯定问题来自于我对此几乎一无所知。但是基本上我在服务器端口5000上有一个套接字,我需要一个angularjs代码来监听这个套接字。服务器上的套接字可以读取我从另一台计算机(客户端)发送的任何内容。但是由于某种原因,angular代码不能监听/连接到插座。以下是我现在所拥有的:

index.html

<html ng-app="MyAwesomeApp">
<head>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/ng-websocket/ng-websocket.js"></script>
<script src="app.js"></script>
</head>

<body ng-controller="cnt">
</body>    
</html> 

下面是angularjs代码:

var app = angular.module('MyAwesomeApp', ['ngWebsocket']);

app.controller('cnt', function ($websocket) {
  var ws = $websocket.$new('ws://localhost:5000');

  ws.$on('$open', function () {
    ws.$emit('hello', 'world'); // it sends the event 'hello' with data 'world'
  })
  .$on('test', function (message) { // it listents for 'incoming event'
    console.log('something incoming from the server: ' + message);
  });
});
#server example
import socket

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(('localhost', 5000))
serversocket.listen(1) # become a server socket, maximum 5 connections
# print "hello"
while True:
    connection, address = serversocket.accept()
    print address
    while True:
        buf = connection.recv(16)
        if len(buf) > 0:
            connection.sendall(buf)
            print buf
            # break

在Firefox中:

Firefox无法与ws://localhost:5000/上的服务器建立连接。

共有1个答案

董喜
2023-03-14

你想做的是不可能的。至少不是以你想要的方式。

WebSockets是一种应用程序层协议,就像HTTP协议一样。请注意ws部分ws://localhost:5000

另一方面,您使用的是普通的BSD套接字。这只是一个用于双方通信的原始套接字。它需要一个“知道”对方(AngularJS)在“说话”什么,即需要使用相同的协议进行通信。在BSD套接字的情况下,它本质上没有。

 类似资料:
  • 我在unix(OSX)机器上使用kqueue建立了一个TCP/IP echo服务器,它可以打开100个TCP/IP端口,每个端口接受4000个客户端,我使用另外15台机器建立了大约23万个连接。(每道工序4000康纳,每箱4道工序) 服务器似乎可以接受更多,但问题是客户端,建立更多连接是有限制的。如Windows XP-3000、Windows7、UNIX-16384。 我怎么克服?

  • Java: 在C#中-它停止在“receiver=listener.accept();”在java(android)中-它停止于“sender_socket=new Socket(serverAddr,SERVERPORT);”这应该是java套接字函数的问题--需要另一个函数连接到C#-server。

  • 当我尝试使用套接字将物理设备连接到服务器时,我遇到了一个问题。在服务器端,它似乎不接受任何连接,而在客户端,套接字超时。你知道为什么会这样吗? 我在下面提供我的代码 服务器代码: 客户端: 11-16 23:32:11.016:W/系统。错误(24213):java.net。ConnectException:无法连接到/192.168.1.116(端口9090):连接失败:ETIMEDOUT(连接

  • 我正在创建我的计算机和android之间的客户端套接字连接。 以下是服务器的代码: 当我在计算机上运行客户端时,一切都正常。以下是计算机客户端的代码: 当我在android中运行this客户端代码时,系统停止工作,错误是什么?这是android客户端代码: 以下是应用程序崩溃的日志:

  • 首先我要感谢你花时间... 我在macbook中用C++创建了一个服务器套接字,在运行windows XP的不同机器中用Java创建了一个客户机/套接字。我已将端口指定为5000,但无法指定正确的主机,因此无法进行连接。当我在windows xp中使用WinSock2创建一个C++服务器/套接字时,当我使用本地主机时,连接是完美的...有什么想法吗??? 提前Thnx int main(int a

  • 真的需要你帮忙。 我的项目是通过电缆连接两台PC机,并使用tcp套接字将客户端文本框形式的字符串发送到服务器。问题是ATI只能发送一个字符串,然后连接就会关闭。 注意:某个端口上的连接将在表单加载中建立并成功。