Opera中的Websocket功能
我试图了解Opera浏览器支持的websocket功能。我从网上得到了一些示例代码 是否可以使用WebSocket从Opera12.x浏览器连接到一个简单的c echo服务器(不使用web服务器),该服务器在某些端口(比如9999)上提供服务?我试过了,但不起作用。浏览器中出现断开连接错误,错误为:未定义。在LinuxEcho服务器端,它接收连接请求,但无法读取任何数据 我正在本地加载测试页面,而不是从任何web服务器加载 如果简单echo服务器不够,是否可以增强简单echo服务器以返回HTTP响应并使其工作。基本上,我尝试使用浏览器中的WebSocket接口连接到服务器,而不使用任何web服务器 谢谢, 拉吉 websocket客户端(复制自)Opera中的Websocket功能,websocket,opera,Websocket,Opera,我试图了解Opera浏览器支持的websocket功能。我从网上得到了一些示例代码 是否可以使用WebSocket从Opera12.x浏览器连接到一个简单的c echo服务器(不使用web服务器),该服务器在某些端口(比如9999)上提供服务?我试过了,但不起作用。浏览器中出现断开连接错误,错误为:未定义。在LinuxEcho服务器端,它接收连接请求,但无法读取任何数据 我正在本地加载测试页面,而不是从任何web服务器加载 如果简单echo服务器不够,是否可以增强简单echo服务器以返回HTTP
var wsUri=“ws://192.168.100.2:9999/”;
var输出;
函数init()
{
输出=document.getElementById(“输出”);
testWebSocket();
}
函数testWebSocket()
{
websocket=新的websocket(wsUri);
websocket.onopen=函数(evt){onopen(evt)};
websocket.onclose=函数(evt){onclose(evt)};
websocket.onmessage=函数(evt){onmessage(evt)};
websocket.onerror=函数(evt){onerror(evt)};
}
功能开启(evt)
{
写屏(“连接”);
doSend(“网岩”);
}
函数onClose(evt)
{
写屏(“断开”);
}
消息函数(evt)
{
writeToScreen('响应:'+evt.data+'');
websocket.close();
}
函数onError(evt)
{
writeToScreen('错误:'+evt.data);
}
函数doSend(消息)
{
writeToScreen(“已发送:+消息”);
发送(消息);
}
功能写入屏幕(消息)
{
var pre=document.createElement(“p”);
pre.style.wordWrap=“断开单词”;
pre.innerHTML=消息;
输出.appendChild(pre);
}
addEventListener(“加载”,init,false);
回显服务器(从复制)
。
#定义我的\u端口9999
#定义maxbuf1024
int main(int计数,字符*字符串[])
{int sockfd;
self中的结构sockaddr_;
字符缓冲区[MAXBUF];
/*---创建流式套接字---*/
if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
{
佩罗(“插座”);
出口(errno);
}
/*---初始化地址/端口结构---*/
bzero(&self,sizeof(self));
self.sin_family=AF_INET;
self.sinu端口=htons(我的端口);
self.sin\u addr.s\u addr=INADDR\u ANY;
/*---为套接字分配端口号---*/
if(绑定(sockfd,(结构sockaddr*)和self,sizeof(self))!=0)
{
perror(“套接字绑定”);
出口(errno);
}
/*---让它成为一个“监听插座”---*/
如果(听(sockfd,20)!=0)
{
佩罗尔(“插座——听”);
出口(errno);
}
/*---永远---*/
而(1)
{int clientfd;
客户端地址中的结构sockaddr\u;
int addrlen=sizeof(客户地址);
/*---接受连接(创建数据管道)---*/
clientfd=accept(sockfd,(结构sockaddr*)和client_addr,&addrlen);
printf(“%s:%d已连接\n”、inet\u ntoa(客户端地址sin\u addr)、ntohs(客户端地址sin\u端口));
printf(“收到%d\n”,recv(clientfd,buffer,MAXBUF,0));
printf(“日期%s\n\n”,缓冲区);
/*---回发任何邮件---*/
发送(clientfd,buffer,recv(clientfd,buffer,MAXBUF,0),0);
/*---关闭数据连接---*/
关闭(clientfd);
}
.
.
.
WebSocket协议不是原始TCP套接字连接。您的服务器还必须支持WebSocket协议
有一个在线WebSockets回音服务
如果您真的想从WebSocket连接到原始套接字服务器,您可以使用它在两者之间架起桥梁。免责声明:我制作了WebSocket
<!DOCTYPE html>
<meta charset="utf-8" />
<script language="javascript" type="text/javascript">
var wsUri = "ws://192.168.100.2:9999/";
var output;
function init()
{
output = document.getElementById("output");
testWebSocket();
}
function testWebSocket()
{
websocket = new WebSocket(wsUri);
websocket.onopen = function(evt) { onOpen(evt) };
websocket.onclose = function(evt) { onClose(evt) };
websocket.onmessage = function(evt) { onMessage(evt) };
websocket.onerror = function(evt) { onError(evt) };
}
function onOpen(evt)
{
writeToScreen("CONNECTED");
doSend("WebSocket rocks");
}
function onClose(evt)
{
writeToScreen("DISCONNECTED");
}
function onMessage(evt)
{
writeToScreen('<span style="color: blue;">RESPONSE: ' + evt.data+'</span>');
websocket.close();
}
function onError(evt)
{
writeToScreen('<span style="color: red;">ERROR:</span> ' + evt.data);
}
function doSend(message)
{
writeToScreen("SENT: " + message);
websocket.send(message);
}
function writeToScreen(message)
{
var pre = document.createElement("p");
pre.style.wordWrap = "break-word";
pre.innerHTML = message;
output.appendChild(pre);
}
window.addEventListener("load", init, false);
</script>
<div id="output"></div>
</html>
.
#define MY_PORT 9999
#define MAXBUF 1024
int main(int Count, char *Strings[])
{ int sockfd;
struct sockaddr_in self;
char buffer[MAXBUF];
/*---Create streaming socket---*/
if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 )
{
perror("Socket");
exit(errno);
}
/*---Initialize address/port structure---*/
bzero(&self, sizeof(self));
self.sin_family = AF_INET;
self.sin_port = htons(MY_PORT);
self.sin_addr.s_addr = INADDR_ANY;
/*---Assign a port number to the socket---*/
if ( bind(sockfd, (struct sockaddr*)&self, sizeof(self)) != 0 )
{
perror("socket--bind");
exit(errno);
}
/*---Make it a "listening socket"---*/
if ( listen(sockfd, 20) != 0 )
{
perror("socket--listen");
exit(errno);
}
/*---Forever... ---*/
while (1)
{ int clientfd;
struct sockaddr_in client_addr;
int addrlen=sizeof(client_addr);
/*---accept a connection (creating a data pipe)---*/
clientfd = accept(sockfd, (struct sockaddr*)&client_addr, &addrlen);
printf("%s:%d connected\n", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));
printf("Received %d\n", recv(clientfd, buffer, MAXBUF, 0));
printf("Date %s\n\n", buffer);
/*---Echo back anything sent---*/
send(clientfd, buffer, recv(clientfd, buffer, MAXBUF, 0), 0);
/*---Close data connection---*/
close(clientfd);
}
.
.
.