首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Node.js,socket.io,要求()

Node.js,socket.io,要求()
EN

Stack Overflow用户
提问于 2012-08-03 12:09:48
回答 3查看 10.2K关注 0票数 2

我的目标:创建node.js服务器和客户端应用程序,这些应用程序将在两个web浏览器之间发送反日元(事件、字符串、函数调用)。

我安装并创建了简单的服务器,但问题从创建客户端开始。正如在http://socket.io/上所说的,我通过命令安装了它:

npm install socket.io

但是基本示例中所需的文件:

<script src="/socket.io/socket.io.js"></script>

未下载或安装。在/node_modules/socket.id/lib中有这样的文件名,但是是同一个文件吗?我认为这是socket.io客户端,但作为服务器模块,不是针对web浏览器的javascript对吗?

如何获得只起作用且可以连接到socket.io.js服务器的node.js,而没有定义io/socket/require等错误?

我不想创建响应普通http请求的web服务器。我希望服务器能够在两个浏览器()中保持连接并能够在JS脚本之间进行通信。

我只能忍受,每个人都以形式写node.js,就像世界上每个人都在每个可能的方向上都有socket.io.js文件一样。可能的重复:

socket.io.js not found

从一个函数调用require()开始,该函数调用JavaScript API中没有干净的JavaScript。所以我甚至不尝试这个解决方案。谁能解释一下如何正确地包含和定义io*?是关于Express框架的吗?为什么node.js和socket.id页面对明确的需求只字未提?

问题是,我需要一个客户机js库,我的意思不是“服务器上的客户机”,我的节点二进制服务器将能够连接到其他页面/服务器并进行通信。我是说HTML客户端页面中的客户端。如果有必要的话,还有其他的JS。

我从http://serv1.aelag.com:8084/的演示中抓取了一个例子

代码语言:javascript
运行
复制
/** Socket.IO 0.6.2 - Built with build.js */
/**
 * Socket.IO client
 * 
 * @author Guillermo Rauch <guillermo@learnboost.com>
 * @license The MIT license.
 * @copyright Copyright (c) 2010 LearnBoost <dev@learnboost.com>
 */

this.io = {
    version: '0.6.2',
...

如何以正常方式获取该文件,而不窃取其他服务器(可能是不稳定版本或旧版本)?我需要精确的文件。有依赖关系吗?我应该通过构建"build.js“来创建它,还是开发人员这样做呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-03 12:24:56

您确实需要在任何地方添加/socket.io/socket.io.js。如果您已经通过socket.io安装了npm install socket.io,那么应用程序就知道如何处理它。几个月前,我和socket.io一起玩过,这是我想出来的一个非常简单的“聊天”,它起了作用。所以这可能会帮到你!(我正在使用ExpressJS。一个非常有用的Node.JS框架(顺便说一句)

这是您的服务器端应用程序:

代码语言:javascript
运行
复制
var app = require('express').createServer();
var io = require('socket.io').listen(app);

app.listen(3000);

app.get('/', function (req, res) {
  res.sendfile(__dirname + '/index.html');
});

io.sockets.on('connection', function (socket) {
    socket.on('news', function (data) {
        socket.emit('news', { content: data.text });
        socket.broadcast.emit('news', { content: data.text});
    });
});

这是你的index.html

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html>
<head>
<title>socket test</title>
</head>
<body>
<input type="text" id="Username"> <input type="text" id="Content"><input type="button" value="send" onclick="sendMessage()"><br />
<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost:3000/pathtoproject');
  socket.on('news', function (data) {
    document.body.innerHTML += data.content + "<br />";
  });
  function sendMessage() {
      socket.emit('news', { text: document.getElementById('Username').value + ": " + document.getElementById('Content').value });
  }
</script>
</body>
</html>
票数 2
EN

Stack Overflow用户

发布于 2012-08-03 13:54:58

我终于解决了这个

socket.io脚本不以平面文件的形式存在。是由node.js服务器生成并提供给浏览器的。所以。其中包括:

<script src="/socket.io/socket.io.js"></script>

只有当node.js服务器与web应用程序在同一个端口上启动时才能工作。如果您试图在端口80上加载此脚本,则需要将整个路径放置到node.js服务器侦听主机:

<script src="http://localhost:8080/socket.io/socket.io.js"></script>

票数 3
EN

Stack Overflow用户

发布于 2014-05-24 16:41:24

我设法将socket.io加载到客户端,如下所示:

代码语言:javascript
运行
复制
jQuery.getScript("bower_components/socket.io/lib/socket.js", function() {
   var socket = io.connect('http://localhost');
   socket.on('news', function (data) {
     console.log(data);
     socket.emit('my other event', { my: 'data' });
   });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11795481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档